【问题标题】:In AngularJs, how value propagate from real view value --> $viewValue --> $modelValue --> real model value and vice versa?在 AngularJs 中,值如何从真实视图值--> $viewValue --> $modelValue --> 真实模型值传播,反之亦然?
【发布时间】:2015-04-07 18:28:21
【问题描述】:

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

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

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

谢谢!!!

【问题讨论】:

  • 下面的答案是否解决了您的问题?如果是这样,请考虑接受作为答案
  • @New Dev ,我用你的答案得到了这个概念,我也在网上搜索更深入。我找到了很多资源。

标签: angularjs angularjs-directive angular-ngmodel


【解决方案1】:

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

<input ng-model="name">

$viewValue 是 DOM 中显示的值 - 即视图。 每个输入控件都有自己的含义。例如,对于&lt;input&gt; 元素,$viewValue 是:

element.val()

但对于自定义输入控件,它可以是任何你定义的控件。

ngModelrequire: "ngModel" 的指令提供挂钩以转换和验证值。此外,ngModelOptions 允许在可能的延迟后延迟将值提交到模型

model -->                      $formatters --> $validators --> view
view  --> (debounce delay) --> $parsers    --> $validators --> model

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2014-07-25
    • 2011-09-16
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多