2017-05-10 53 views
1

我對Angular指令有點新不瞭解,想知道是否有一種方法可以多次使用同一個指令但綁定不同的數據? (我敢肯定,那裏有一種方法,我只是不知道如何!)對不同的數據使用相同的指令

例如,我有想做成1個指令,只是傳遞數據不同我下面兩個表:

1.Here我正在通過對象的數組的重複,如果KV isPaint:真,那麼我將打印以下表..

<tr class="hover" 
    ng-repeat="paint in allOptions | orderBy: 'listPrice'" 
    ng-if="paint.isPaint" 
    ng-click="addRemoveOption(paint)" 
    ng-class="{'selected':isSelected(paint)}" 
     > 
    <td> {{ paint.code }}</td> 
    <td> {{ paint.name }}</td> 
    <td> {{ paint | includedOption }}</td> 
    <td> {{ paint.disclaimer }}</td> 
    <td> {{ paint.salesGroup }}</td> 
    <td> {{ paint.optionPrev}}</td> 
    <td> {{ paint.familyCode }}</td> 

</tr> 
  • 我在這裏做同樣的除我是檢查修剪...

    <tr class="hover" 
        ng-repeat="trim in allOptions | orderBy: 'listPrice'" 
        ng-if="trim.isTrim" 
        ng-click="addRemoveOption(trim)" 
        ng-class="{'selected':isSelected(trim)}" 
        > 
        <td> {{ trim.code }}</td> 
        <td> {{ trim.name }}</td> 
        <td> {{ trim | includedOption }}</td> 
        <td> {{ trim.disclaimer }}</td> 
        <td> {{ trim.salesGroup }}</td> 
        <td> {{ trim.optionPrev }}</td> 
        <td> {{ trim.familyCode }}</td> 
        </tr> 
    
  • 我只需要訪問控制器從指令將被使用的頁面,所以我有權訪問'allOptions'。我想我可以通過在指令中設置scope:true來做到這一點?

    我可以輕鬆地將ng-repeat名稱更改爲更一般的名稱,那麼我只需要更改ng-if是如果要在表中打印值的主要決定因素。所有的表格列,數據等都完全一樣,我只需要能夠分開修剪,塗料,選項等。我發現了一個類似的帖子Use same directive in same view and bind different data,但我真的不知道這裏發生了什麼......

    感謝您的幫助,如果有任何額外的信息,我可以提供請讓我知道。

    回答

    1

    簡單指令重複列表:

    app.directive('myDirective', function($compile) { 
        return { 
        restrict: 'E', 
        scope: { 
         list: '=' 
        }, 
        template: '<div ng-repeat="item in list">{{item.name}}</div>', 
    
        replace: true, 
        //require: 'ngModel', 
        link: function($scope, elem, attr, ctrl) { 
    
        } 
        }; 
    }); 
    

    這裏是一個Plunker

    這應該讓你開始。

    +0

    我將不得不改變我的數據模型來做這個工作,但我相信這是正確的答案。但是,我可能應該以這種方式讓我的數據模型開始:)。再次感謝! – reedb89

    +0

    不客氣!很高興我能幫上忙! –

    相關問題