Sagen, ich habe die folgende Direktive aktualisieren:
myApp.directive('myDirective', function() {
return {
restrict: 'A',
require: 'ngModel',
scope: {
ngModel: '='
},
link: function(scope, elem, attrs, ngModelCtrl) {
scope.$watch('ngModel', function() {
ngModelCtrl.$modelValue = 'foo';
});
}
}
});
Und die folgende html:
<input ng-model="name" my-directive></input>
Grundsätzlich, wenn der Benutzer Änderungen Die Eingabe my-directive
würde idealerweise den internen Modellwert in "foo" ändern, während der Ansichtswert unverändert bleibt.
Aber wenn ich $scope.name
im entsprechenden Controller auszudrucken, ist es nicht log „foo“, meldet er unabhängig vom Benutzer eingegebene in
Es scheint, dass ngModelCtrl.$modelValue
ist nicht das, was die Steuerung zugreift. - gehe ich dieses Problem falsch an?
(Auch die ngModel
im Rahmen beobachtet wirklich falsch anfühlt, aber ich bin nicht sicher, ob irgendeine andere Art und Weise. Irgendwelche Vorschläge wären sehr willkommen!)
Anstatt ngModel anzusehen, können Sie '$ viewChangeListeners' verwenden, das speziell für diesen Zweck entwickelt wurde. Aber warum willst du '$ modelValue' anders als den viewValue setzen? – PSL
Ich möchte, dass Benutzer in kommagetrennte Daten eingeben können, aber das zugrunde liegende Modell die Informationen als Array speichern. – Cody
Gefällt Ihnen? http://plnkr.co/edit/pWpnup?p=preview – PSL