gpt4 book ai didi

jquery - 使用 jQuery 设置输入值后更新 Angular 模型

转载 作者:IT王子 更新时间:2023-10-29 03:24:13 25 4
gpt4 key购买 nike

我有这个简单的场景:

通过 jQuery 的 val() 方法更改值的输入元素。

我正在尝试使用 jQuery 设置的值更新 Angular 模型。我试图编写一个简单的指令,但它没有按照我的意愿进行。

这是指令:

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>

这是我尝试的 fiddle :
http://jsfiddle.net/U3pVM/743/

有人可以指出我正确的方向吗?

最佳答案

ngModel 监听“输入”事件,因此要“修复”您的代码,您需要在设置值后触发该事件:

$('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
});

有关此特定行为的解释,请查看我刚才给出的答案:“How does AngularJS internally catch events like 'onclick', 'onchange'?


但不幸的是,这不是您遇到的唯一问题。正如其他帖子评论所指出的,您以 jQuery 为中心的方法是完全错误的。有关更多信息,请查看这篇文章:How do I “think in AngularJS” if I have a jQuery background? ).

关于jquery - 使用 jQuery 设置输入值后更新 Angular 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17109850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com