2017-05-31 8 views
1

ディレクティブのレベルに、より正確には最後のカラムのボタンを追加するために、ボタンをクリックしたときにテーブルの行を追加するディレクティブを作成しました。私は1つの方法は、私のコントローラであり、このボタンをクリックしたときに、これは少し意外だったディレクティブ内にAngularjs ng-clickが発生しない

myapp.directive("newCandidat", function() { 
     return { 
      restrict : "E", 
      template : "<tr>"+ 
          "<td><input class='form-control' value='' disabled='disabled'></td>"+ 
          "<td><input class='form-control' value='' disabled='disabled'></td>"+ 
          "<td><input class='form-control' value=''></td>"+ 
          "<td><button ng-click='method()'>click</button></td>"+ 
         "</tr>", 
      replace: true, 
      transclude:true, 
      terminal: true, 
      scope:{method:'&'}, 
      link: function(scope, element, attrs) { 
       console.log(element); 
       } 

     }; 
    }); 

    myapp.controller("Controller",function($scope,$compile){ 
     $scope.addCand=function(){ 
      angular.element($("#candList")).append($compile("<new-candidat method='clickMe()'><new-candidat>")($scope)); 
     } 
     $scope.clickMe=function(){ 
      console.log("Click me"); 
     } 
    }); 

答えて

1

呼び出すことを望むが、それはterminal: trueなしで動作します。 terminal:trueは、要素に適用される唯一の指令であっても、指令のテンプレートのコンパイルを停止するようです。それを確認するにはplnkrをチェックしてください。 docsから

端末

trueに設定されている場合、現在の優先度(現在の優先度で任意のディレクティブは が依然としてとして実行される実行される 指令の最後のセットであろう同じ優先度での実行順序は 未定義です)。 ディレクティブのテンプレートで使用されている式やその他のディレクティブも、実行から除外されます。

これもまたhereと報告されました。

terminal: trueが必要ですか?もしそうなら、あなたの指示はその内容をコンパイルしなければならないかもしれません。 this answerをチェックしてください。

+0

私たちはターミナルを使用している魔女の状況を教えていただけますか? – Drame

+0

コンパイルするタイミングを制御する必要がある場合があります。次のリンクを確認してください: https://stackoverflow.com/questions/18969610/why-use-terminal-true-instead-of-removing-lower-priority-directives https://stackoverflow.com/questions/ 15266840 /指示の終わりを理解する方法 –

関連する問題