【问题标题】:ngChange not Triggered on ngModel changengChange 未在 ngModel 更改时触发
【发布时间】:2014-10-06 18:30:14
【问题描述】:

UI 引导程序演示了一个使用按钮和无序列表的下拉选择。这一切都很好而且很花哨,但是,我试图获得与 HTML 中的选择标签相同的功能。选择一个选项并更改模型的值然后触发 ng-change 函数等功能。

我认为当附加到输入的 ngModel 发生更改时会触发 ngChange 事件,但事实并非如此。我附上了我的问题的插件,它演示了更改user.groupng-model 的列表项的选择,它应该调用ng-change="alert('blah')",但它没有。我是否缺少 ngChange 的某种语义?

http://plnkr.co/edit/oZo7xGEVKvB0ntwiNFMp?p=info

【问题讨论】:

    标签: angularjs twitter-bootstrap angularjs-ng-change


    【解决方案1】:

    正如官方文档所说的 ngChange 指令:

    当用户改变输入时计算给定的表达式

    https://docs.angularjs.org/api/ng/directive/ngChange

    因此该指令与模型更改无关,它处理用户与表单元素的交互。

    更多来自 angular 文档:

    它不会被评估:

    • 如果从 $parsers 转换管道返回的值没有改变
    • 如果输入继续无效,因为模型将保持为空
    • 如果模型以编程方式更改,而不是通过更改输入值

    【讨论】:

      【解决方案2】:

      我看到您在按钮标签上使用了 ng-model 指令。这是行不通的,因为您只能在 html 表单输入元素上使用 ng-model。您的按钮不是输入类型。查看 angularjs 文档:https://docs.angularjs.org/api/ng/directive/ngModel

      ngModel 指令绑定 inputselecttextarea(或自定义表单 control) 到使用 NgModelController 的作用域上的一个属性,它是 由该指令创建和公开。

      【讨论】:

      • 我阅读了文档,并且一定是监督过的。看起来像 $watch 是为了。感谢您的快速响应
      • $watch 确实会为您服务!
      猜你喜欢
      • 2012-08-05
      • 1970-01-01
      • 2017-05-27
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 2018-11-13
      相关资源
      最近更新 更多