2016-06-22 1 views
0

私はAngularJSには新しく、別のディレクティブを含むディレクティブを作成しようとしています。 。ディレクティブディレクティブAngular

:私はすべてのイベントを表示するにはNGリピートを使用しています。このディレクティブのhtmlの内部

function() { 
    app.directive("cmEventBar", function() { 

     var controller = function() { 
      var vm = this; 
      vm.events = [ 
       {name: "Truckdriver1", eventId: 1 }, 
       {name: "Truckdriver2", eventId: 1 }, 
       {name: "Truckdriver3", eventId: 1 } 
      ]; 
     } 

     return { 
      templateUrl: "app/shared/eventsBar/eventBar.html", 
      restrict: "E", 
      controller: controller, 
      priority: 1000, 
      terminal: true, 
      controllerAs: "vm", 
      scope: {} 
     }; 
    }); 
})(); 

どのように見えるか最初のディレクティブここで

Insindeは、私は別のディレクティブを持ってNGリピート

<div ng-repeat="item in vm.events"> 
      <cm-single-event name="{{item.name}}" eventId="{{item.eventId}}"></cm-single-event> 
     </div> 

ここでどのように見えるか第二のディレクティブ:

(function() { 
    app.directive("cmSingleEvent", function() { 

     var controller = function() { 
      var vm = this; 
      vm.info = switchEvent(eventId); 
     } 

     return { 
      template: "<li class={{vm.info.itemClass}}> {{vm.name}} {{vm.info.messege}} </li>", 
      restrict: "E", 
      controller: controller, 
      controllerAs: "vm", 
      scope: { 
       name: "=", 
       eventId: "=" 
      } 
     }; 
    }); 
})(); 

イベントには3つの要素があり、出力には1つの要素しか表示されないため+内部にはvm.infoはありません。

出力

{{vm.name}} {{}} vm.info.messege

私はここで間違って何をしているのですか?

ありがとうございます!何であるか

+0

'switchEvent'? –

+0

idでイベントに関する情報を返す単純なjavascript関数 – miechooy

+2

eventIdは、HTML側にevent-idと記述する必要があります。また、bindToController:trueを使用して、vmの名前とイベントIDにアクセスします。 – Delapouite

答えて

3

あなたはname & eventIdため=を使用していると属性にあった値を代入& cmSingleEventディレクティブはthis(コンテキスト)をコントローラにisolated scopeから値を取得するためにbindToController: trueを持っている必要がありながら、あなたは{{}}を使うべきではありませんが

<cm-single-event name="item.name" event-id="item.eventId"></cm-single-event> 
+0

@miechooyそれを知ってうれしく思います:-) –

関連する問題