Нужно ли нам несколько контроллеров для реализации маршрутов в angularjs?
Есть вероятность, что я не смогу правильно объяснить свою проблему. Дай мне попробовать.
Я разрабатываю одностраничное приложение с использованием угловых. Это приложение в основном отображает эпизоды серии онлайн-романов. Существует панель навигации, которая имеет меню запросов (например, последний эпизод, эпизод с определенной датой, эпизоды с определенным тегом и т. Д.). Для каждого из этих запросов я хочу отдельный URL.
/latest
- должен отображать последний эпизод
/tag/:tagname
- должен вернуть все эпизоды с этим тегом.
Для всех этих запросов результирующее представление одинаково (список эпизодов). Поэтому я буду использовать один и тот же частичный для всех маршрутов.
У меня вопрос: нужно ли мне создавать новый контроллер для каждого запроса? лайк, LatestEpisodeController
, TagController
?
Можно ли в любом случае использовать URL-адрес, чтобы определить, что пользователь хочет, и выполнить этот запрос из одного контроллера?
3 ответа
Конечно, вы можете использовать тот же контроллер в определении маршрутизации, вопрос в том, какова цель этого? Потом будет хуже отлаживать его, если у вас есть общая функциональность, лучше превратить его в фабрику или службу, а затем использовать в контроллерах.
Но ответ ДА, вы можете использовать одни и те же контроллеры и реализовывать различное поведение на основе, например, $location.path()
Да, вы можете использовать один контроллер для множественной маршрутизации. вы можете создавать различные функции в контроллере и в каждой функции выполнять соответствующую работу. В моем случае я создал другую html-страницу для разных URL-адресов и зарегистрировал один и тот же контроллер для html-страниц, а на html-странице я вызвал метод контроллера, используя ng-init в части div.
Вы можете использовать тот же контроллер и те же представления, что и вам... $location может помочь вам получить текущий путь или полный URL, если вы хотите, и вы можете позвонить в службу, зависит от вашего пути...
здесь я напишу небольшой пример для вас, чтобы получить идею