Улучшить эту документацию Просмотреть исходный код ngModel.NgModelController
- тип в модуле ng
NgModelController предоставляет API для директивы ng-model. Контроллер содержит сервисы для привязки данных, валидации, обновления CSS и форматирования/парсинга значений. Он намеренно не содержит логики, связанной с рендерингом DOM или прослушиванием событий DOM. Такая логика, связанная с DOM, должна предоставляться другими директивами, которые используют NgModelController для привязки данных.
Этот пример демонстрирует, как использовать NgModelController с пользовательским элементом управления для достижения привязки данных. Обратите внимание, как различные директивы (contenteditable, ng-model, и required) взаимодействуют друг с другом для достижения желаемого результата.
Обратите внимание, что contenteditable — это атрибут HTML5, который сообщает браузеру, что содержимое элемента может редактироваться пользователем непосредственно в нём. Это не будет работать в старых браузерах.
Мы используем сервис $sce и включаем модуль $sanitize, чтобы автоматически удалять «плохое» содержимое, такое как встроенные обработчики событий (например, <span onclick="...">). Однако, поскольку мы используем $sce, модель всё ещё может предоставить небезопасное содержимое, если пометит его с помощью сервиса $sce.
Методы
-
$render();
Вызывается, когда необходимо обновить представление. Ожидается, что пользователь директивы ng-model реализует этот метод.
-
$isEmpty(value);
Вызывается, когда нам нужно определить, является ли значение ввода пустым.
Например, директива required делает это, чтобы выяснить, содержит ли ввод данные или нет. По умолчанию функция
$isEmptyпроверяет, является ли значениеundefined,'',nullилиNaN.Вы можете переопределить это для директив ввода, чьё понятие пустого значения отличается от значения по умолчанию. Директива
checkboxInputTypeделает это, потому что в её случае значениеfalseподразумевает пустоту.Параметры
Параметр Тип Подробности value *Ссылка для проверки.
Возвращаемое значение
booleanИстина, если
valueпусто. -
$setValidity(validationErrorKey, isValid);
Изменить состояние валидности и уведомить форму, когда контроль изменяет валидность. (т.е. не уведомляет форму, если заданный валидатор уже помечен как невалидный).
Этот метод должен вызываться валидаторами - т.е. функциями парсера или форматирования.
Параметры
Параметр Тип Подробности validationErrorKey stringИмя валидатора.
validationErrorKeyбудет назначено$error[validationErrorKey]=!isValid, чтобы оно было доступно для привязки данных.validationErrorKeyдолжно быть в camelCase и будет преобразовано в dash-case для имени класса. Пример:myErrorприведет кng-valid-my-errorиng-invalid-my-errorклассам и может быть привязано как{{someForm.someControl.$error.myError}}.isValid booleanЯвляется ли текущее состояние валидным (true) или невалидным (false).
-
$setPristine();
Устанавливает контроль в первоначальное состояние.
Этот метод может быть вызван для удаления класса 'ng-dirty' и установки контроля в первоначальное состояние (класс 'ng-pristine').
-
$setViewValue(value);
Обновить значение представления.
Этот метод должен вызываться при изменении значения представления, как правило, внутри обработчика события DOM. Например, директивы input и select вызывают его.
Он обновит $viewValue, затем передаст это значение через каждую из функций в
$parsers, что включает в себя любые валидаторы. Значение, полученное из этой$parsersцепочки, будет применено к$modelValueи выражению, указанному в атрибутеng-model.Наконец, все зарегистрированные обработчики изменений в списке
$viewChangeListenersвызываются.Обратите внимание, что вызов этой функции не запускает
$digest.Параметры
Параметр Тип Подробности value stringЗначение из представления.
Свойства
-
$viewValue
stringФактическое строковое значение в представлении.
-
$modelValue
*Значение в модели, к которой привязан контроль.
-
$parsers
Array.<Function>Массив функций для выполнения в качестве цепочки, всякий раз, когда контроль считывает значение из DOM. Каждая функция вызывается по очереди, передавая значение следующей функции. Последнее возвращаемое значение используется для заполнения модели. Используется для очистки/преобразования значения, а также для валидации. Для валидации парсеры должны обновлять состояние валидности с помощью $setValidity() и возвращать
undefinedдля невалидных значений. -
$formatters
Array.<Function>Массив функций для выполнения в качестве цепочки, всякий раз, когда меняется значение модели. Каждая функция вызывается по очереди, передавая значение следующей функции. Используется для форматирования/преобразования значений для отображения в элементе управления и валидации.
function formatter(value) { if (value) { return value.toUpperCase(); } } ngModel.$formatters.push(formatter); -
$viewChangeListeners
Array.<Function>Массив функций для выполнения всякий раз, когда значение представления изменилось. Он вызывается без аргументов, и его возвращаемое значение игнорируется. Это может быть использовано вместо дополнительных $watches относительно значения модели.
-
$error
ObjectХэш-объект со всеми ошибками в качестве ключей.
-
$pristine
booleanИстина, если пользователь ещё не взаимодействовал с элементом управления.
-
$dirty
booleanИстина, если пользователь уже взаимодействовал с элементом управления.
-
$valid
booleanИстина, если нет ошибок.
-
$invalid
booleanИстина, если есть хотя бы одна ошибка в элементе управления.
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.2.32/docs/api/ng/type/ngModel.NgModelController