С указанием контроллера AngularJS: преимущества использования ngController vs. $routeProvider
Существует два способа (AFAIK) связать контроллер с шаблоном/частичным представлением: маршрут, указанный в директиве $routeProvider
и ngController
. Особенно (но не исключительно) для простой маршрутизации, есть ли какая-либо польза/эффективность одного над другим?
В моем проекте в настоящее время используется метод $routeProvider, но мне задана задача вложенности. Это кажется достаточно простым с ngInclude, если частичный указывает свой ngController.
Ответы
Ответ 1
Если вы думаете о представлении, включая все сценарии как автономный пакет, разработанный одним человеком или командой, тогда ngController
- это путь, imho.
$routeProvider
, с другой стороны, предоставляет вам дополнительные функции, такие как ввод значений через свойство resolve
маршрута. Таким образом, вы можете загружать данные, загруженные AJAX, прямо в ваш контроллер, например, вместо того, чтобы контроллер имел его для себя. Или измените маршрут, чтобы дождаться этих данных и т.д.
Btw: если вам нужны маршруты и вложенные представления, вы можете взглянуть на angular ui-router
Ответ 2
Этот вопрос действительно сводится к дизайну и, как таковой, немного основан на мнениях. Это, на мой взгляд, лучшее руководство, которое я знаю:
-
$routeProvider
- Позволяет указать один контроллер для шаблона. Поскольку это часть маршрутизации, она упрощает поиск контроллера, который идет со страницей. Я использую это для хранения и загрузки общей логики страницы, а не логики, специфичной для элемента.
Это также важно, потому что это означает, что вы можете загрузить один и тот же шаблон для двух разных маршрутов, но поведение и данные могут быть разными, потому что контроллер можно изменить. Это не то, что легко сделать с опцией ngController
.
-
ngController
- Это позволяет контроллеру выбрать определенный элемент на странице/шаблоне. Это может облегчить чтение кода, когда вам нужно несколько контроллеров на одной странице, и это позволяет контроллеру быть более узко определенным.
Таким образом, это действительно сводится к размаху и намерению. Надеюсь, эти правила помогут при принятии решения о том, что использовать.