我正在尝试在不修改 HTML 的情况下模拟指令中的 ng-change 属性(因此没有 ng-change 属性)。
查看指令的角度源代码ngChange
,我的指令工作并且看起来像这样:(基本上在这个指令中,我需要blur()
一个select
字段 when model
change
)
.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() 呢?
谢谢