С указанием контроллера AngularJS: преимущества использования ngController vs. $routeProvider

Существует два способа (AFAIK) связать контроллер с шаблоном/частичным представлением: маршрут, указанный в директиве $routeProvider и ngController. Особенно (но не исключительно) для простой маршрутизации, есть ли какая-либо польза/эффективность одного над другим?

В моем проекте в настоящее время используется метод $routeProvider, но мне задана задача вложенности. Это кажется достаточно простым с ngInclude, если частичный указывает свой ngController.

Ответы

Ответ 1

Если вы думаете о представлении, включая все сценарии как автономный пакет, разработанный одним человеком или командой, тогда ngController - это путь, imho.

$routeProvider, с другой стороны, предоставляет вам дополнительные функции, такие как ввод значений через свойство resolve маршрута. Таким образом, вы можете загружать данные, загруженные AJAX, прямо в ваш контроллер, например, вместо того, чтобы контроллер имел его для себя. Или измените маршрут, чтобы дождаться этих данных и т.д.

Btw: если вам нужны маршруты и вложенные представления, вы можете взглянуть на angular ui-router

Ответ 2

Этот вопрос действительно сводится к дизайну и, как таковой, немного основан на мнениях. Это, на мой взгляд, лучшее руководство, которое я знаю:

  • $routeProvider - Позволяет указать один контроллер для шаблона. Поскольку это часть маршрутизации, она упрощает поиск контроллера, который идет со страницей. Я использую это для хранения и загрузки общей логики страницы, а не логики, специфичной для элемента.

    Это также важно, потому что это означает, что вы можете загрузить один и тот же шаблон для двух разных маршрутов, но поведение и данные могут быть разными, потому что контроллер можно изменить. Это не то, что легко сделать с опцией ngController.

  • ngController - Это позволяет контроллеру выбрать определенный элемент на странице/шаблоне. Это может облегчить чтение кода, когда вам нужно несколько контроллеров на одной странице, и это позволяет контроллеру быть более узко определенным.

Таким образом, это действительно сводится к размаху и намерению. Надеюсь, эти правила помогут при принятии решения о том, что использовать.