Spec-Zone.ru › Angular.js 1.2

Улучшить эту документацию Просмотреть исходный код ngModel.NgModelController

  1. тип в модуле 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API