PlunkrZwei-Wege in AngularJS nicht verbindlich arbeiten sofort Während Benutzerdefinierte Richtlinien Mit
Ich habe eine einfache auto-complete Dropdown. Es funktioniert gut, wenn ich nur Controller verwende.
Ich möchte es wiederverwendbar machen, also habe ich eine benutzerdefinierte Direktive mit isolierten Bereich gemacht.
Aber das Problem ist, wenn ich auf der Suche Text eingeben, ruft es nicht die Controller-Funktion, die ng-change
sofort zugewiesen ist. Wenn ich noch einmal tippe, ruft es die Funktion auf. Wiederum nimmt es den Wert, den ich vorher eingegeben habe, nicht den aktuellen Modellwert.
Ich bin neu bei benutzerdefinierten Richtlinien ... Ich weiß wirklich nicht , wie Sie das Modell sofort aktualisieren und vom Direktivenbereich zum Controller-Bereich übergehen.
Andere denken, Ich kann nicht den Funktionsparameter von HTML zu Controller-Funktion übergeben.
Ich denke, ich muss $apply
oder $digest
irgendwo verwenden .. Aber wo und wie soll ich verwenden?
autofillApp.directive('autofillDropdown', function($rootScope) {
return {
restrict: 'A',
templateUrl: "dropdowntemplate.html",
replace: true,
scope: {
'items': '=autofillItems',
'selected': '=autofillSelected',
'change': '&autofillChange',
'focused': '=autofillFocus',
'onSelect': '&autofillOnselect'
},
link: function(scope, element, attr) {
//console.log(scope.$$watchers);
//console.log(element);
//console.log(attr);
return
},
compile: function(element, attributes) {
var linkFunction = function($scope, element, attributes) {
$scope.$apply();
}
return linkFunction;
}
};
})
Hier ist mein Plunkr: Plunkr
funktioniert gut.Vielen Dank für die Bereitstellung der vollständigen Lösung. –