2016-08-18 9 views
1

ボタンで構成されるカスタムディレクティブがあります このボタンをクリックすると、カスタムディレクティブとして既に定義されている行全体を追加します。それ自体はここクリック時に別のカスタムディレクティブの中にカスタムディレクティブを追加する方法

はHTML

<tbody> 
       <tr> 
        <row-creator></row-creator> 
       </tr> 
      </tbody> 

ここでは、しかし、ボタン

app.directive('rowCreator', function() { 
return { 
    restrict: "AE", 
    template: "<button>Add Row</button>", 
    link: function(scope, element, attrs){ 
     element.bind('click', function(){ 
      element.append(<exception-row></exception-row>); 
      console.log('appended'); 
     }) 

    } 
}}); 

ためのディレクティブの宣言であると呼ばれます私が<exception-row>を、<p>this is some text</p>のような角度解釈を必要としない要素に置き換えると、うまく機能します。それで私はそれが多分コンパイルと関係があると思うが、私はそれをやることができない何時間も試みてきた。

+0

作業溶液:app.directive( 'rowCreator'、機能(){ リターン{ が制限だから、あなたが持っているだろう付加した後のような何かを、 スコープ:{}、 テンプレート: "<例外行ng-repeat = '行インデックス$ row'> "、 リンク:function(scope、element、attrs){ scope.rows = []; s cope.addRow = function(){ scope.rows.push(scope.rows.length);//あなたが欲しいものは何でも }; } }}); –

答えて

0

$compileを使用してHTMLをコンパイルする必要があります。 "AE":

$compile(element.contents())(scope); 
0

使用テンプレート:

app.directive('rowCreator', function() { 
return { 
    restrict: "AE", 
    scope: {}, 
    template: "<button ng-click="addRow()">Add Row</button><exception-row ng-repeat="row in rows track by $index"></exception-row>", 
    link: function(scope, element, attrs) { 
     scope.rows = []; 
     scope.addRow = function() { 
      $scope.rows.push($scope.rows.length); // or whatever else you want 
     }; 
    } 
}}); 
+0

こんにちは@JB Nizet、あなたがJsfiddleのデモを提供することができれば素晴らしいだろう –

+0

はい私は希望の行に行を追加することはできません、それはちょうど私がしたくない場所に追加します –

関連する問題