2013-07-12 12 views
12

w moim kontrolera mam zdefiniowane $scope.worker który jest zwykły obiekt JS:Przechodząc zmienną z zakresu regulatora z dyrektywą

{ 
    name: 'Peter', 
    phone: 601002003 
} 

Utworzyłem dyrektywy:

.directive('phoneType', [function() { 
    return { 
     restrict: 'A', 
     link: function (scope, element, attrs) { 
      console.log(attrs); 
     } 
    }; 
}]) 

i mój HTML wygląda tak:

<span phone-type="worker.phone"></span> 

Jak mogę przekazać worker.phone (w tym przykładzie 601002003) od t kontroluje zakres do dyrektywy, więc mogę stworzyć swoją logikę w metodzie link? attrs.phoneType teraz pokazuje mi ciąg znaków worker.phone.

Odpowiedz

27

Można także przekazać wartość do dyrektywy poprzez wiązanie dwukierunkowy:

.directive('phoneType', [function() { 
    return { 
     scope: { 
      phoneNumber: '=phoneType' 
     } 
     link: function (scope, element, attrs) { 
      // now do stuff with the number, you can access it through the scope 
      scope.phoneNumber // contains the number 
     } 
    }; 
}]) 

Teraz można uzyskać dostęp numer bezpośrednio poprzez zakres izolowania. Szablon będzie wyglądać następująco:

<span phone-type="worker.phone"></span> 

Nawiasem mówiąc, nie trzeba zastrzegania A. Jest to domyślne zachowanie.

+0

Wolę to rozwiązanie. – pixelbits

+1

Otrzymuję nieprawidłowy błąd klucza – Jordash

+0

scope.phoneType nie zaktualizuje się mimo aktualizacji worker.phone. Czy jest na to jakieś rozwiązanie? –

Powiązane problemy