В AngularJs, как значение распространяется от значения реального представления --> $viewValue --> $modelValue --> значение реальной модели и наоборот?

Я не знаю, как задать этот вопрос. этот вопрос всегда сбивает меня с толку, когда я пишу пользовательскую директиву. чтобы лучше понять этот вопрос, я возьму пример:

<input type="text" ng-model="name" />

при вводе в текстовое поле при каждом изменении выполняется функция обработчика. этот вызов обработчика ctrl.$setViewValue(value), где ctrl - ngModelController, а value - реальное значение (которое я ввел в текстовое поле). Таким образом, реальное значение представления распространяется на $viewValue. до сих пор вся концепция проясняется. но я не знаю, как $viewValue распространяется на $modelValue и на реальное значение модели и наоборот. пожалуйста, порекомендуйте мне какой-нибудь учебник для этого или поделитесь своими знаниями здесь :)

Спасибо!!!


person Mukund Kumar    schedule 07.04.2015    source источник
comment
Ответил ли ответ ниже на ваш вопрос? Если да, рассмотрите возможность принятия в качестве ответа   -  person New Dev    schedule 18.04.2015
comment
@New Dev, я получил концепцию, используя ваш ответ, и я также ищу в Интернете, чтобы углубиться. и я нашел много ресурсов.   -  person Mukund Kumar    schedule 19.04.2015


Ответы (1)


Как следует из названия, $modelValue — это значение, к которому привязана директива ngModel, то есть модель. Например, name ниже:

<input ng-model="name">

$viewValue — это значение, отображаемое в DOM, то есть в представлении. Каждый элемент управления вводом имеет свое собственное значение того, что он означает. Например, для элемента <input> $viewValue это:

element.val()

но для пользовательского элемента управления вводом это может быть что угодно и как бы вы его ни определили.

ngModel предоставляет хуки для директив, которые require: "ngModel" преобразовывают и проверяют значение. Кроме того, ngModelOptions позволяет отложить фиксацию значения в модель после возможной задержки

model -->                      $formatters --> $validators --> view
view  --> (debounce delay) --> $parsers    --> $validators --> model
person New Dev    schedule 08.04.2015