2013-04-20 10 views
9

Podążam więc za this EggHead.io tutorial w sprawie niestandardowych komponentów i natknąłem się na ten problem. Podczas deklarowania dyrektywy, takich jak:Uzyskiwanie dostępu do tekstu dyrektywy kątowej (elementu) wewnątrz szablonu

angular.module('myApp', []) 
    .directive('myDir', function(){ 
     return { 
      restrict: "E", 
      controller: "myController", 
      link: function(scope, element, attrs) { 
       scope.foo = element.text(); 
      }, 
      templateUrl: "myDirTemplate.html" 
     } 
    }); 

i samopoczucie Szablon:

<div>The value is: {{foo}}</div> 

i dyrektywa wykorzystywane takich jak następuje:

<html> 
... 
<myDir>Bar</myDir> 
... 
</html> 

elementu w funkcji łącza odnosi się do

<div>The value is: {{foo}}</div> 

w szablonie. Jeśli nie określić templateUrl, następnie elementem odnosi się do

<myDir>Bar</myDir> 

w głównym widoku, który jest to, co chcę. Miałem nadzieję, że dyrektywa miałaby się „bar” tekst i włóż ją do {{foo}}, dając końcowy rezultat:

<div>The value is: Bar</div> 

Ale nie wiem, jak się poruszać kątowe wybranie szablonu element za każdym razem.

Wszelkie pomysły?

Odpowiedz

22

Trzeba użyć ngTransclude:

app.directive('myDir', function(){ 
    return { 
    restrict: "E", 
    transclude: true, 
    templateUrl: "myDirTemplate.html", 
    replace: true 
    } 
}); 

a następnie szablon zewnętrzny staje się coś podobnego do:

<div>The value is: <span ng-transclude></span></div> 

wyświetlić kod pracujący tutaj: http://plnkr.co/edit/EuT5UlgyxgM8d54pTpOr?p=preview

+0

To działa! Dziękuję Ci! –

+0

Dziękujemy! To działa! – ZhukV

Powiązane problemy