gpt4 book ai didi

javascript - Angular以编程方式添加没有属性的ngChange

转载 作者:行者123 更新时间:2023-11-30 17:30:36 25 4
gpt4 key购买 nike

我试图在不修改 HTML 的情况下模拟指令中的 ng-change 属性(因此没有 ng-change 属性)。

查看 ngChange 指令的 Angular 源代码,我的指令有效并且看起来像这样:(基本上在这个指令中,当 model change 时,我需要 blur() 一个 select 字段)

.directive('blurOnChangeFix', ['$timeout',
function($timeout) {
return {
restrict: 'AEC',
require: 'ngModel',
link: function($scope, element, attr, ngModel) {
// automatically blur element on ngModel change
ngModel.$viewChangeListeners.push(function() {
$timeout(function() { // IE bug fix
$(element).blur();
}, 100);
});
}
};
}
]);

应用它:

<select
id="test"
ng-options="option for option in ['test1', 'test2'] track by option"
class="form-control"
ng-model="form.test"
ng-required="true"
blur-on-change-fix
></select>

但这是正确的解决方案吗?没有其他方法可以做到这一点吗? scope.change() 怎么样?

谢谢

最佳答案

如果我没理解错的话,您是想在您的模型上做一个$watch;例如:

link: function($scope, element, attr, ngModel) {
$scope.$watch(attr.ngModel,function(newVal,oldVal) {
element.blur();
})

你说当 model 改变时你想做一些事情,所以这就是 $watch 的用法。

关于javascript - Angular以编程方式添加没有属性的ngChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23149820/

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