【发布时间】:2014-04-18 07:49:34
【问题描述】:
我正在尝试在不修改 HTML 的情况下模拟指令中的 ng-change 属性(因此没有 ng-change 属性)。
查看 ngChange 指令的 Angular 源代码,我的指令有效,看起来像这样:
(基本上在这个指令中,当modelchange时我需要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() 呢?
谢谢
【问题讨论】:
标签: javascript angularjs angularjs-directive angular-ngmodel angularjs-ng-change