模型更改时触发更改事件

时间:2016-08-17 18:45:10

标签: jquery angularjs

我需要在模型值发生变化的所有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>

选择选项显示警报。当我单击按钮时,值(模型)确实会更改,但不会显示警报,因为模式更改不会触发“更改”事件。

2 个答案:

答案 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。