2013-01-24 15 views
5

Dlaczego formatery nie działają z izolowanym zasięgiem? Czy to jest kanciasty błąd, czy robię coś nie tak?Dlaczego formatery nie działają z izolowanym zasięgiem?

zawiera izoluje zakres i nie działa: 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); 
    }); 

nie zawierają izolowane i zakres działa prawidłowo: 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); 
    }); 

Odpowiedz

6

To nie ma nic wspólnego z formatujących, ale raczej fakt, że ngModel nie ma już dostępu do wartości, którą próbujesz przekazać. Gdy tworzysz zakres izolatu, myDate nie jest już dostępny w dyrektywie ngModel (ponieważ utworzyłeś nowy zakres - zakres izolatu - który nie ma na nim myDate). Jako dowód, oto not-so-useful example że Seta myDate zakresu oparte na tym, co przeszedł do atrybutu ngModel: http://jsfiddle.net/YbdXQ/78/

angular/angular.js#1069 „zakres izolacja jedną dyrektywę za izoluje innych dyrektyw dotyczących tego samego elementu,” mówi o tym samym problemem:

na przykład, zauważyć, jak mój zwyczaj dyrektywa uniemożliwia nG-modelu z pracy

Możesz być także zainteresowany this StackOverflow question, "ngModel and component with isolated scope".

Powiązane problemy