2013-01-24 10 views
5

Warum Formatierer nicht mit isolierten Bereich funktioniert? Ist dieser Winkelfehler oder mache ich etwas falsch?Warum Formatierer nicht mit isolierten Bereich funktioniert?

Dieser enthält Isolaten Umfang und funktioniert nicht: http://jsfiddle.net/YbdXQ/56/

restrict: 'A', 
scope:{}, 
link: function(scope, elm, attrs, ctrl) { 
     ctrl.$formatters.unshift(function(modelValue) { 
      console.log("In formatters" + modelValue); 
     return $filter('date')(modelValue); 
    }); 

Dieses enthält nicht isoliert und Umfang funktioniert: http://jsfiddle.net/YbdXQ/57/

restrict: 'A', 
link: function(scope, elm, attrs, ctrl) { 
     ctrl.$formatters.unshift(function(modelValue) { 
      console.log("In formatters" + modelValue); 
     return $filter('date')(modelValue); 
    }); 

Antwort

6

Dieses nichts mit Formatierer zu tun haben, aber die Tatsache, dass ngModel nicht mehr Zugriff auf den Wert hat, den Sie versuchen, es zu übergeben. Wenn Sie einen Isolatbereich erstellen, ist myDate für die Direktive ngModel nicht mehr verfügbar (da Sie einen neuen Bereich erstellt haben - einen Isolate-Bereich -, der myDate nicht enthält). Als Beweis, hier ist ein not-so-useful example, die die Set myDate auf den Umfang auf, was in das ngModel Attribut übergeben wird: http://jsfiddle.net/YbdXQ/78/

angular/angular.js#1069: „Eine Richtlinie der Isolation Umfang Isolaten andere Richtlinien auf dem gleichen Element“, spricht über dieses sehr Problem:

Zum Beispiel darauf, wie meine benutzerdefinierte Direktive wird in this StackOverflow question, "ngModel and component with isolated scope" ng-Modell verhindert Arbeits

Sie könnten auch interessiert sein.