我有一个简单的场景:
输入元素,其值由jQuery的val()方法更改。
我试图用jQuery设置的值更新角度模型。我试图编写一个简单的指令,但是它没有执行我想要的操作。
这是指令:
var myApp = angular.module('myApp', []); myApp.directive('testChange', function() { return function(scope, element, attrs) { element.bind('change', function() { console.log('value changed'); }) } })
这是jQuery部分:
$(function(){ $('button').click(function(){ $('input').val('xxx'); }) })
和html:
<div ng-app="myApp"> <div ng-controller="MyCtrl"> <input test-change ng-model="foo" /> <span>{{foo}}</span> </div> </div> <button>clickme</button>
这是我尝试的小提琴:http : //jsfiddle.net/U3pVM/743/
有人能指出我正确的方向吗?
ngModel侦听“ input”事件,因此要“修复”您的代码,需要在设置值后触发该事件:
$('button').click(function(){ var input = $('input'); input.val('xxx'); input.trigger('input'); // Use for Chrome/Firefox/Edge input.trigger('change'); // Use for Chrome/Firefox/Edge + IE11 });
不幸的是,这不是您遇到的唯一问题。正如其他评论所指出的那样,以jQuery为中心的方法是完全错误的。。