Javascript 触发自定义指令的更改
我试图让我的自定义指令激活ngChange事件,以便原始控制器在指令中的数据发生更改时执行某些操作 我的指令如下所示:Javascript 触发自定义指令的更改,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我试图让我的自定义指令激活ngChange事件,以便原始控制器在指令中的数据发生更改时执行某些操作 我的指令如下所示: .directive('spInputCheckbox', function() { return { scope: { ngModel: '=', ngChange: '&' }, restrict: 'AE',
.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()
}
}
};
})
.directive('spInputCheckbox',function(){
返回{
范围:{
ngModel:“=”,
ngChange:“&”
},
限制:“AE”,
替换为:“true”,
模板:“X{{title}}”,
链接:功能(范围、要素、属性){
scope.title=attr.title
范围:$watch('ngModel',函数(值){
如果(值){
scope.model=scope.ngModel
}
});
scope.change=函数(值){
scope.ngModel=scope.model
scope.ngChange()
}
}
};
})
我这样称呼它
<sp-input-checkbox ng-model="info"
ng-init="info = false"
title="click me"
ng-change="alert(7)" />
这是一个带有代码的示例由于更改是一个单击事件,您可以使用
ng click
。可以为ng click
事件调用范围函数
$scope.modified=function(){
警觉(7);
};代码>
也许观看模型可以像这样实现你想要的
scope.$watch('model', function(value){
if(value){
scope.ngModel = scope.model
hasChange = true
}
if(hasChange) {
scope.change()
}
});
查看整个代码这将显示警报。但我要找的是,不要启动ng变革活动。但既然它是一个复选框,而且单击是唯一可能的更改,为什么您需要ng更改事件?如果它不是复选框,请说输入type=“text”否,这正是困扰我的问题,我无法让ng更改正常工作,无论是type=“text”还是type=“checkbox”如果您感兴趣,可以举一个不使用ng change
或ng click
的示例。