Ich versuche, meine benutzerdefinierte Anweisung ein ngChange-Ereignis zu aktivieren, damit der ursprüngliche Controller etwas tun kann, wenn Daten in der Direktive geändert haben.Auslöser ngChange von benutzerdefinierter Anweisung
sieht meine Anweisung wie folgt aus:
.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()
}
}
};
})
und hier ist, wie ich es nennen
<sp-input-checkbox ng-model="info"
ng-init="info = false"
title="click me"
ng-change="alert(7)" />
hier ein JsFiddle mit dem Code
Dies würde den Alarm anzeigen. aber feuere nicht das ng-change-Ereignis, das ich suche –
Yeah. Aber da es ein Kontrollkästchen ist und Klick die einzige Änderung ist, warum brauchen Sie das Ereignis ng-change? – pahan
Falls es etwas anderes als eine Checkbox war, sagen Sie einen Eingangstyp = "Text" –