2016-03-24 1 views
0

AngularJSコントローラの結果をHTMLテーブルに条件付きでフォーマットする方法を考えています。これは、配列内の要素を操作するng-repeatの繰り返しの間にうまくいきます。ng-repeatの中で条件付き書式/スタイルを指定する

私が達成したいのは、コントローラ内の関数がtrueを返すときはいつでも、背景またはスタイルは緑色で、そうでないときは赤色になります。

挿入ポイントのコメントに「BEGIN QUESTION」と表示されます。

 <!-- PLAYER STATS TABLE --> 
    <div id = "StatsListTable"> 
    <table border="1" style="width:80%"> 
    <tr> <!-- TODO: class="tr.pstats" --> 
     <th>Character Name</th> 
     <th>  
      <div ng-app="KIdash" ng-controller="controller"> 
      Total Matches: {{TotalMatchesFunc()}} :: {{GreaterWins()}} 
      </div> 
     </th> 
     <th class="green">Wins</th> 
     <th class="red">Losses</th> 
    </tr> 
     <tr ng-repeat="ps in PlayerStats" class = "playerStatTable"> 
      <td>{{ps.name}}</td> 
      <td>{{ps.matches}}</td> 

      <!-- BEGIN QUESTION --> 
      <!-- IF {{GreaterWins()}} make it green --> 
      <!-- ELSE     make it red --> 
      <script type="text/javascript"> 
      function() { 
       if(controller.GreaterWins()) 
       { 
        <th class="green">{{ps.wins}}</th> 
       } else { 
        <th class="red">{{ps.wins}}</th> 
       } 
      } 
      </script> 
      <!-- END IF --> 
      <td>{{ps.losses}}</td> 
     </tr> 
    <table> 
    </div> 
    <!-- END PLAYER STATS TABLE --> 
+0

元の質問を更新したのはなぜですか?私はあなたがしたい場合は元の質問をそのまま残して、ソリューションで編集を追加すると言うだろう。 –

答えて

2

これはng-classで行うことができます。次のようなもの:

<tr ng-repeat="ps in PlayerStats" class = "playerStatTable"> 
     <td>{{ps.name}}</td> 
     <td>{{ps.matches}}</td> 
     <td ng-class="{'green': GreaterWins(),'red': !GreaterWins() }">{{ps.wins}}</td>     
     <td>{{ps.losses}}</td> 
</tr> 
+0

どのような優れた答え!ありがとうございます。すべての結果は赤で、GreaterWins()関数が実際に正しく使用されていることを保証するために必要なことは何ですか?このコンテキストでは、controller.GreaterWins()と呼ぶ必要がありますか? –

+0

コントローラを構文として使用していないので、 'controller.GreaterWins()'を明示的に書く必要はありません。 'GreaterWins()'関数は 'controller'スコープで定義されていますか?それは常に 'false'を返しますか? –

+0

論理>比較をTまたはFに置き換えると、期待どおりに動作します。だから私はちょうど値を適切に比較していないようです。 –