在ngModel更改时未触发ngChange

时间:2014-10-06 18:30:14

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

UI bootstrap使用按钮和无序列表演示选择下拉列表。这很好,花花公子,但是,我试图获得与HTML中的选择标记相同的功能。功能包括选择一个选项和更改模型的值然后触发ng-change功能。

我认为当连接到输入的ngModel发生更改时会触发ngChange事件,但事实并非如此。我已经为我的问题附加了一个plunker,它演示了选择更改user.group ng-model的列表项,该列表项应该调用ng-change="alert('blah')",但它不会。我是否错过了使用ngChange的某种语义?

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

2 个答案:

答案 0 :(得分:3)

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

  

当用户更改输入

时评估给定的表达式

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

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

更多来自angular docs:

  

不会评估:

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

答案 1 :(得分:2)

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

  

ngModel指令绑定输入选择 textarea (或自定义表单)   使用NgModelController对范围内的属性进行控制   由该指令创建和公开。