2013-03-14 5 views
58

私はAngularJSを使用していますが、私が得たい効果は、これがうまくいくと仮定した場合と同様のものになります。私はそれだけで、各列内のオブジェクトに利用可能になるようにpersonng-classに使用できないため、このコードは動作しないであろうことを理解テーブル内の行にng-repeatとng-classを使用しています

表示

<tr ng-repeat='person in people' ng-class='rowClass(person)'> 
    <td>.....info about person...</td> 
    <td>.....info about person...</td> 
    <td>.....info about person...</td> 
</tr> 

コントローラ

$scope.rowClass = function(person){ 
    ...return some value based upon some property of person... 
} 

。このコードは、私が何をしようとしているのかを知ることです。私はng-repeatを使用して作成されたテーブル行を持つことができたいと思っています。そのクラスは、行自体のスコープ付きフィーチャへのアクセスにも依存する条件にも基づいています。 person。私はの列にng-classを追加することができたと思いますが、それは退屈です。誰もが良いアイデアを持っていますか?

+0

が重複する可能性[私は条件付きでAngularJSにCSSスタイルを適用するにはどうすればよいです?](http://stackoverflow.com/questions/13813254/how-do-i-conditionally-apply-css-styles-in- anglejs) –

答えて

64

これは実際には正常に動作する必要があります。人は同じ範囲を共有するので、tr要素とその子要素で利用できるようにする必要があります。

これが私のために正常に動作するようです:

<table> 
    <tr ng-repeat="person in people" ng-class="rowClass(person)"> 
     <td>{{ person.name }}</td> 
    </tr> 
</table> 

http://jsfiddle.net/xEyJZ/

+4

Hmph、そうです。私はそれから何をやっているのだろうか...。ありがとう – oeoeaio

8

実際には、です。あなたが参照している文脈で "人"を使用してください。これは、繰り返されるアイテムおよびその中のアイテムに存在します。その理由は、特定の要素のディレクティブが同じ$ scopeオブジェクトを共有するためです。 ng-repeatの優先順位は1000であるため、すでに$ scopeを作成して "person"を入れているので、 "person"はng-classに使用できます。

このPlnkrを参照してください:

http://plnkr.co/edit/ZI5Pv24U01S9dNoDulh6

0

通常、私はより包括的な答えを与えたいが、それを行うには、このビットに関与しすぎてコードがあります。だから、最も重要なことを見せてくれる人が誰に見ても、それをどのように使うのか分かります。私の動的JSON配列には列と行の両方がありますが、このビットにとって重要なのはng-show = "$ last"です。これは動的JSON配列の最後の行のみを表示します。

<tr ng-repeat="row in table.rows" ng-show="$last"> 

    <td ng-repeat="column in table.cols" ng-show="column.visible == true" nowrap >{{row[column.columnname]}}</td> 
</tr> 
関連する問題