2016-04-02 17 views
1

私は1つのディレクティブに複数のdivを含めることを試みていますが、ディレクティブは最初のdivでのみ動作し、他のdivはその内部に残ります。1つのディレクティブに複数のdivを含めるにはどうすればよいですか?

テンプレートコード:

<div actor-check-box ng-repeat="actor in actors"> 

    <div create-connections class="actor\{{$index}}" > 
      <span><input class="checkbox-actor" type="checkbox" name="actor-checkbox" id="actor-checkbox\{{$index}}">\{{actor}}</span> 
    </div> 

    <div ng-repeat="activity in activities"> 

     <div ng-if="actor == activity.id"> 

      <div ng-repeat = "impact in activity.text" > 
       <div update-connections class="impact\{{$index}}actor\{{actors.indexOf(actor)}}" actor-id="actor\{{actors.indexOf(actor)}}"> 
        <span><input class="checkbox-activity" type="checkbox" name="impact-checkbox" id="activity-checkbox\{{$index}}actor\{{actors.indexOf(actor)}}" activity-check-box>\{{impact}}</span> 
       </div> 

       <div ng-repeat="feature in features"> 

        <div ng-if="actor == feature.id && impact == feature.key"> 
         <div feature-connection ng-repeat = "feature in feature.text" class="feature\{{$index}}" activity-id="impact\{{activity.text.indexOf(impact)}}actor\{{actors.indexOf(actor)}}" id=""> 
           <span><input class="checkbox" type="checkbox" name="impact-checkbox" id="" >\{{feature}}</span> 
         </div> 
        </div> 

       </div> 

      </div> 

     </div> 

    </div> 

</div> 

指令コード:

angular.module('mainModule').directive('actorCheckBox', function($interval) { 

    return { 
     restrict: 'EA', 
     /*transclude: true,*/ 

     link: function (scope, element, attrs, ctrl) { 

      scope.$watch('ngModel', function(newValue){ 
       /*alert(newValue);*/ 
       console.log(element.find('input[type="checkbox"]')); 
       /*console.log(element.find('input[class="checkbox-actor"]'));*/ 
       console.log(element.find('input[class="checkbox-activity"]')); 
       console.log(attrs); 

      }); 
     } 
    } 
}); 

コンソールで、出力:

[input#actor-checkbox0.checkbox-actor, prevObject: o.fn.init[1], context: div.ng-scope, selector: "input[type="checkbox"]"] 
[input#actor-checkbox1.checkbox-actor, prevObject: o.fn.init[1], context: div.ng-scope, selector: "input[type="checkbox"]"] 
[input#actor-checkbox2.checkbox-actor, prevObject: o.fn.init[1], context: div.ng-scope, selector: "input[type="checkbox"]"] 

だから、問題は、私は3つのdivのを持っているとディレクティブが最初に適用されていますdiv と2つのdivがチェックボックス付きのメインdivの内側にあります。このディレクティブが呼び出されると、コンソールは、他の2つのdivでないmain divのチェックボックス要素のみを表示します。

私がinlude:trueを指定すると、要素の以前のディレクティブがすべて削除され、ページは空白になります。

+3

分かりにくい*「期待した結果が何であるかを適切に説明していない」*言い換えれば、あなたの問題が何であるかは明らかではありません。プランナーデモも役に立ちます – charlietfl

+0

私は1つのjsfiddleを作成しようとしましたが、同じものを複製できませんでした。問題は、私はこのような構造を持っています:

some data
some data
です。しかし、私のディレクティブは、最初のdivのためだけに2番目と3番目のdivのために動作しません。 –

+0

デモで問題を再現できない場合は、手助けするのは簡単ではありません – charlietfl

答えて

0

ng-repeatは別のスコープを作成するので、これは起こりません。また、divにもインクルードするか、独立したスコープを使用しないようにディレクティブを変更する必要があります。

+0

もう1つのdivを作成し、そのdiv内のすべてを囲む必要がありますか? –

+0

いいえチェックボックスを表示するディレクティブを各divに使用する必要があります。 – atefth

+0

私はそれを試しましたが、すべてのng-repeatを少しずつ読み込んでいます。内部ng-repeatを含めるようにします。 –

関連する問題