Улучшить эту документацию Просмотреть исходный код ngController
- директива в модуле ng
Обзор
Директива ngController прикрепляет класс контроллера к представлению. Это ключевой аспект того, как Angular поддерживает принципы шаблона проектирования Model-View-Controller.
Компоненты MVC в Angular:
- Модель — Модели — это свойства области видимости; области видимости прикрепляются к DOM, где к свойствам области видимости обращаются через привязки.
- Представление — Шаблон (HTML с привязками данных), который отображается в Представлении.
- Контроллер — Директива
ngControllerзадаёт класс Контроллера; класс содержит бизнес-логику приложения для добавления функций и значений в область видимости
Обратите внимание, что вы также можете прикрепить контроллеры к DOM, объявив их в определении маршрута с помощью сервиса $route. Распространённой ошибкой является повторное объявление контроллера с использованием ng-controller в самом шаблоне. Это приведёт к тому, что контроллер будет прикреплён и выполнен дважды.
Информация о директиве
- Эта директива создаёт новую область видимости.
- Эта директива выполняется на уровне приоритета 500.
Использование
- в качестве элемента:
<ng-controller ng-controller="expression"> ... </ng-controller>
- в качестве атрибута:
<ANY ng-controller="expression"> ... </ANY>
Аргументы
| Параметр | Тип | Подробности |
|---|---|---|
| ngController | expression | Имя конструкторской функции, зарегистрированной в текущем $controllerProvider, или выражение, которое в текущей области видимости вычисляется в конструкторскую функцию. Экземпляр контроллера можно опубликовать в свойство области видимости, указав |
Пример
Вот простая форма для редактирования контактной информации пользователя. Добавление, удаление, очистка и приветствие — это методы, объявленные в контроллере (см. вкладку «Исходный код»). Эти методы легко вызываются из разметки AngularJS. Любые изменения в данных автоматически отражаются в представлении без необходимости ручного обновления.
Ниже приведены два разных стиля объявления:
- один привязывает методы и свойства непосредственно к контроллеру, используя
this:ng-controller="SettingsController1 as settings" - один вводит
$scopeв контроллер:ng-controller="SettingsController2"
Второй вариант более распространён в сообществе AngularJS и обычно используется в шаблонах и в этом руководстве. Однако есть преимущества в привязке свойств непосредственно к контроллеру и избегании области видимости.
- Использование
controller asделает очевидным, к какому контроллеру вы обращаетесь в шаблоне, когда к элементу применяются несколько контроллеров. - Если вы пишете контроллеры в виде классов, у вас проще доступ к свойствам и методам, которые появятся в области видимости, из кода контроллера.
- Так как всегда есть
.в привязках, вам не нужно беспокоиться о маскировке примитивов прототипным наследованием.
Этот пример демонстрирует синтаксис controller as.
Этот пример демонстрирует стиль «привязка к $scope» контроллера.
© 2010–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
https://code.angularjs.org/1.8.2/docs/api/ng/directive/ngController