HTMLを変更せずに(つまり、ng-changeプロパティなしで)ディレクティブでng-change属性をシミュレートしようとしています。
ディレクティブのAngularソースコードを見るとngChange
、私のディレクティブは機能し、次のようになります:(基本的に、このディレクティブでは、フィールドが必要blur()
なselect
場合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() はどうですか?
ありがとう