/ / new Direktive führt dazu, dass ng-change zweimal ausgelöst wird - Javascript, Angularjs, Angularjs-Direktive

Neue Direktive führt zu ng-change feuern zweimal - javascript, angularjs, angularjs-directive

Ich bin ziemlich neu in der Winkel und habe das Problem,dass ich eine Variable zur Definition des ng-Modells verwenden möchte. Das funktioniert jetzt, aber jetzt habe ich das Problem, dass das Ereignis ng-change bei Verwendung dieser Direktive zweimal ausgelöst wird.

Ich habe die Priorität der dynamic-model Direktive auf -1 gesetzt, da die ng-Änderung natürlich vom Modell abhängt ...

...
app.controller("testcontroller", function($scope, $http) {
$scope.model = "dynamicmodel";
})

app.directive("dynamicModel",function($compile){
directive = {
priority : -1,
link:function(scope,element,attr){
element[0].removeAttribute("dynamic-model");
element[0].setAttribute("ng-model",scope.$eval(attr.dynamicModel));
$compile(element[0])(scope);
}
}
return directive;
});

Und das HTML

<p>[[item.key]] <input type="text" dynamic-model="model" ng-change="update()" ng-model-options="{updateOn:"default blur", debounce:{default:1000, blur:0}}"></p>

Sieh dir diese Geige an http://jsfiddle.net/r9t2mjy4/

Was kann ich tun? Danke vielmals

Antworten:

0 für die Antwort № 1

Wenn Sie in einer Direktive einem Element eine weitere Direktive hinzufügen, stellen Sie sicher, dass diese eine niedrigere Priorität als Ihre hat.

Dann rufen Sie $ compile auf und übergeben Ihre aktuelle Priorität:

app.directive("dynamicModel",function($compile){
directive = {
priority: 2,
link: function(scope,iElement,iAttrs){
iElement[0].removeAttribute("dynamic-model");
iAttrs.$set("ng-model",scope.$eval(attr.dynamicModel));
$compile(iElement[0])(scope, null, 2);
}
}
return directive;
});