在AngularJs中,值如何从实际值传播 - > $ viewValue - > $ modelValue - >真实的模型价值,反之亦然?

时间:2015-04-07 18:28:21

标签: angularjs angularjs-directive angular-ngmodel

我不知道怎么问这个问题。当我写一个自定义指令时,这个问题总是令我困惑。为了更好地理解这个问题,我举了一个例子:

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

在键入文本框时,每次更改时,处理函数都会执行。这个处理程序调用{​​{1}},其中ctrl是ctrl.$setViewValue(value)ngModelController是实数值(我在文本框中输入).thus实际视图值传播到$ viewValue。直到这里所有概念都被清除。但我不知道$ viewValue如何传播到$ modelValue和真实模型值,反之亦然。请为我推荐一些教程,或者请在这里分享你的知识:)

感谢!!!

1 个答案:

答案 0 :(得分:3)

顾名思义,$modelValuengModel指令绑定的值 - 即模型。例如,下面的name

<input ng-model="name">

$viewValue是DOM中显示的值 - 即视图。 每个输入控件都有其自身含义。例如,对于<input>元素,$viewValue为:

element.val()

但是对于自定义输入控件,它可以是任何东西,无论你定义它。

ngModelrequire: "ngModel"转换和验证值的指令提供了钩子。此外,ngModelOptions允许在可能的延迟

之后延迟将值提交给模型
model -->                      $formatters --> $validators --> view
view  --> (debounce delay) --> $parsers    --> $validators --> model