我试图获取我的自定义指令来激活ngChange事件,以便原始控制器在指令中的数据发生变化时执行某些操作。
我的指令如下:
.directive('spInputCheckbox', function() {
return {
scope: {
ngModel: '=',
ngChange: '&'
},
restrict: 'AE',
replace: 'true',
template: '<div><span ng-click="model = !model"><i ng-if="model">X</i></span><input type="checkbox" ng-model="model" ng-change="change(model)" /><span ng-if="title">{{ title }}</span></div>',
link: function(scope, elem, attr){
scope.title = attr.title
scope.$watch('ngModel', function(value){
if(value){
scope.model = scope.ngModel
}
});
scope.change = function(value){
scope.ngModel = scope.model
scope.ngChange()
}
}
};
})
以及我的称呼方式
<sp-input-checkbox ng-model="info"
ng-init="info = false"
title="click me"
ng-change="alert(7)" />
这里有JsFiddle代码
答案 0 :(得分:0)
由于更改是点击事件,因此您可以使用ng-click
。可以为ng-click
事件调用范围函数。
<sp-input-checkbox ng-model="info"
ng-init="info = false"
title="click me"
ng-click="modified()" />
$scope.modified = function(){
alert(7);
};
答案 1 :(得分:0)
也许观看模型可以做到你想要实现的目标
scope.$watch('model', function(value){
if(value){
scope.ngModel = scope.model
hasChange = true
}
if(hasChange) {
scope.change()
}
});
查看完整代码here