我需要在模型值发生变化的所有SELECT元素上触发'更改'javascript事件。模型的值通过范围以编程方式更改,因此使用ngChange不起作用(仅对用户创建的值更改做出反应)。
请帮忙吗?
代码示例:PLNKR
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'oldname';
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="plunker">
<div ng-controller="MainCtrl">
<p>Hello {{name}}!</p>
<select ng-model="name" class="myInput" onChange="alert('changed');" >
<option value="oldname">oldname</option>
<option value="newname">newname</option>
</select>
<button ng-click="name='newname'">Change by Anguar</button>
</div>
</div>
选择选项显示警报。当我单击按钮时,值(模型)确实会更改,但不会显示警报,因为模式更改不会触发“更改”事件。
答案 0 :(得分:1)
您可以使用$ scope。$ watch来监视模型中的更改并触发更改事件
$scope.$watch('name', function(){
//slct is the id for the select
$('#slct').trigger('change');
})
请参阅plnkr
答案 1 :(得分:0)
onChange是一个javascript事件处理程序,不依赖于angular的摘要循环。请尝试使用ng-change。