2016-07-05 3 views
0

ng-classを使用し、それが使用されている要素の内部内容に基づいた式を提供できるかどうかは疑問でした。ng-class式への要素プロパティの受け渡し

したがって、たとえば、私が持っていると言う:

<table> 
    <tr ng-repeat="result in results"> 
     <td ng-class="vm.getNumberClass(...)"> 
      {{vm.getSomeMagicNumber(result)}} 
     </td> 
    </tr> 
</table> 

は私がng-classディレクティブの表現として使用していますgetNumberClass関数の引数としてtdセル内容の値を渡してもらえますか?

私は私のような何かができる引数

として{{vm.getSomeMagicNumber(result)}}の評価を行った結果を渡す意味、TDセルの内容の値を渡し言うEDIT。これは私のシナリオのための作業を行う一方で、その二回

+1

もちろん、同じ範囲にあれば可能です。あなたのループはあなたの 'ng-class'の上で、あなたの'​​'の上にあるので、両方から' result'を呼び出すことができます。 'result'変数をループ' ng-repeat'と同じレベルで使うことさえできます。 – Elfayer

+0

ええ、それは私が意味するものではありません、私の編集を参照してください、私はあなたがちょうど答えを投稿し、すぐに再度削除を参照してください、しかし、私はこれまでに終わったように同じことを提案してください参照してください – mindparse

+0

あなたの編集から私の答えを更新しました。 – Elfayer

答えて

1

私は本当にあなたがこれらの関数の内部で行うことを喜んでいるのか理解していない関数を呼び出すよう

<td ng-class="vm.getNumberClass(vm.getSomeMagicNumber(result))"> 
    {{vm.getSomeMagicNumber(result)}} 
</td> 

、それはパフォーマンスヒットのように感じています。ここで

は、あなたがどこかに結果を格納する必要があります、私は二回関数を呼び出し避けるためであろうことである(それがCPUにない場合は、RAM上にある必要があります):

angular.module('myApp', []); 
 

 
angular.module('myApp').controller('MyCtrl', function() { 
 
    var vm = this; 
 

 
    vm.getNumberClass = function(number) { 
 
    var className = ''; 
 

 
    switch (parseInt(number)) { 
 
     case 3: 
 
     className = 'red'; 
 
     break; 
 
     case 6: 
 
     className = 'coral'; 
 
     break; 
 
     case 9: 
 
     className = 'pink'; 
 
     break; 
 
    } 
 
    
 
    return className; 
 
    }; 
 

 
    vm.getSomeMagicNumber = function(result) { 
 
    // Any process here and store the result for each row 
 
    result.magicNumber = result.id * 3; 
 
    
 
    return result.magicNumber; 
 
    }; 
 

 
    vm.results = [{ 
 
    id: '1' 
 
    }, { 
 
    id: '2' 
 
    }, { 
 
    id: '3' 
 
    }]; 
 
});
.red { 
 
    background-color: red; 
 
} 
 

 
.coral { 
 
    background-color: coral; 
 
} 
 

 
.pink { 
 
    background-color: pink; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl as vm"> 
 
    <table> 
 
    <tr ng-repeat="result in vm.results"> 
 
     <td ng-class="vm.getNumberClass(result.magicNumber)"> 
 
     {{vm.getSomeMagicNumber(result)}} 
 
     </td> 
 
    </tr> 
 
    </table> 
 
</div>

関連する問題