以下是表单下拉列表的非常简单的设置。但是,on-change
事件拒绝触发......除非它已更改为ng-change
。
这让我停留了大约一个小时,因为我们在网站的其他地方使用相同的设置(即模型属性/ list / on-change
指令)。
我想知道on-change
和ng-change
之间有什么区别,以及为什么一个人在这个例子中工作而另一个人没有?
查看
<select id="grArchive"
name="grArchive"
class="form-control"
options="userList"
ng-model="selectedUser"
ng-options="user as user.name for user in userList"
on-change="showSelected()">
</select>
控制器
scope.selectedUser = {};
scope.userList = [];
scope.showSelected = function(){
scope.columns = addColumns;
};
var loadUserList = function(data){
scope.userList = $.map(data, function(item){
return {id: item.id, name: item.firstName + ' ' + item.lastName};
});
}
以防万一:用户下拉按预期填充(下面的屏幕截图)
答案 0 :(得分:2)
ng-change
是由Angular核心API提供的指令,当$viewValue
ng-model
变量(here是代码)&amp; myFunction()
中发生任何变化时,它会在内部注册表达式。那么你可以在其中加ng-change
个表达式。提供的表达式将在底层控制器范围内进行评估。调用表达式后,它会运行一个摘要周期,以确保在视图上更新绑定。与智慧ng-focus
一样,您可以找到许多用于ng-mousedown
,ng-submit
,ng-blur
,change
等事件的指令。Here您可以找到列表
它是一种在输入元素值function
上调用javascript函数的方法。它将搜索在上下文中全局可用的 digit = num % 10;
(显然它不会调用在角度控制器中注册的函数)&amp;评估它。