2016-07-05 19 views
1

Ich bin ein bisschen neu zu angularjs. Ich schreibe eine Direktive, aber ich kann nicht verstehen, wie bindToController läuft. Ich lese diesen hilfreichen Artikel http://blog.thoughtram.io/angularjs/2015/01/02/exploring-angular-1.3-bindToController.html, aber ich kann nicht verstehen, warum ich im folgenden Beispiel nicht definiert habe.Richtlinie verbindlich undefined

.directive('firstDirective', function(){ 
    return { 
     restrict: 'E', 
     replace: true, 
     scope: true, 
     bindToController: { 
      directiveInput:'=' 
     }, 
     templateUrl: 'components/directive-tree/directive-tree.html', 
     controllerAs: 'directiveTreeCtrl', 
     controller: function($scope, $uibModal){ 
      var self = this; 
      self.selected = null; 
      console.log(self.directiveInput); //HERE IS THE UNDEFINED 
      $scope.modalOptions = { 
       windowClass: 'semi-modal', 
      } 

      this.openDirectiveModal = function(object, index) { 
       //Other irrelevant code 
      } 
     } 
    } 
}); 

Danach kann ich die Eingabe für die HTML-Vorlage ohne jedes Problem verwenden.

<ul> 
    <li ng-repeat="object in directiveTreeCtrl.directiveInput"> 
     {{object.Id}}&emsp;{{object.Name}} 
    </li> 
</ul> 

Warum im HTML-Template kann ich directiveInput und es mit den richtigen Werten instanziiert und meine console.log zeigt mir „undefiniert“?

Vielleicht ist es eine dumme Frage. Danke

+1

Sie benötigen eine Richtlinie wie diese "verwenden 'in Ihrem HTML. Die [offizielle eckige Richtliniendokumentation] (https://docs.angularjs.org/guide/directive) ist vollständiger –

+0

@TomShen ich benutze es richtig. Der einzige Zweifel, den ich habe, ist, warum ich eine undefined in dieser console.log() bekomme und ich kann dieses Objekt nach meinem HTML verwenden, wenn ich es rende – acostela

Antwort

1

Regel den Code schreibe ich dies zu erreichen, wie so aussieht:

.directive('firstDirective', function(){ 
    return { 
     restrict: 'E', 
     replace: true, 
     scope: { 
      directiveInput:'=' 
     }, 
     bindToController: true, 
     templateUrl: 'components/directive-tree/directive-tree.html', 
     controllerAs: 'directiveTreeCtrl', 
     controller: function($scope, $uibModal){ 
      var self = this; 
      self.selected = null; 
      console.log(self.directiveInput); //HERE IS THE UNDEFINED 
      $scope.modalOptions = { 
       windowClass: 'semi-modal', 
      } 

      this.openDirectiveModal = function(object, index) { 
       //Other irrelevant code 
      } 
     } 
    } 
}); 

Nun ist die HTML

<first-directive directive-input="inputObject"></first-directive> 
+0

Ich habe keinen Zweifel darüber, wie man es benutzt. Meine Frage ist eine andere. Warum druckt die console.log UNDEFINED und danach wird das Objekt korrekt gerendert. – acostela

Verwandte Themen