2013-04-06 11 views
5

Niedawno widziałem ten przykład. Po raz pierwszy widziałem kontroler wewnątrz dyrektywy. Czy to normalne? Myślałam, że ma trzymać te dwa w różnych obszarach testowalności:Dlaczego chcesz umieścić kontroler w dyrektywie z AngularJS?

myModule.directive('myComponent', function(mySharedService) { 
    return { 
     restrict: 'E', 
     controller: function($scope, $attrs, mySharedService) { 
      $scope.$on('handleBroadcast', function() { 
       $scope.message = 'Directive: ' + mySharedService.message; 
      }); 
     }, 
     replace: true, 
     template: '<input>' 
    }; 
}) 
+0

Opcja 'tabs' dyrektywa na stronie Kątowymi domowego (patrz Tworzenie Komponentów, zakładka components.js) posiada kontroler tak, że' pane' dyrektywy może uzyskaj dostęp do zakładki '$ scope (więcej na ten temat znajdziesz na http://stackoverflow.com/questions/11605917/this-vs-scope-in-angularjs-controllers/14168699#14168699). Zobacz także [Różnica między kontrolerem a funkcjami łącza w dyrektywie] (http://stackoverflow.com/questions/12546945/difference-between-the-controller-and-link-functions-when-definition-an-angula/12570008# 12570008). –

Odpowiedz

5

Generalnie, można używać kontrolerów w dyrektywach, aby móc dzielić się nimi między dyrektywami, na elemencie. Pozwala to na łatwe komunikowanie się między nimi.

Zobacz tutaj wielki wyjaśnienie jak to działa: http://egghead.io/video/angularjs-directive-to-directive-communication/

+0

Dzięki, ten film wyraźnie oświetlił. Jeszcze jedna potężna rzecz o AngularJS. Najbardziej niesamowite ramy JS, uwielbiam to! – kfis

+0

@kfis cała seria jest niesamowita, zrobiło mi świetną ofertę! –

Powiązane problemy