60

私は AngularJS を使用していますが、得たい効果は、それが機能すると仮定すると、これが生成するものと似たものになります (機能しません)。

意見

<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...
}

このコードは、各行内のオブジェクトでのみ使用できるためperson、使用できないため機能しないことに気付きました。ng-classコードは、私が何をしようとしているのかを理解するためのものです。ng-repeat行自体のスコープ機能へのアクセスに依存する条件にも基づいているクラスを使用して作成されたテーブル行を作成できるようにしたいと考えています。person. 列に ng-class を追加するだけでよいことに気づきましたが、それは退屈です。誰にも良いアイデアはありますか?

4

3 に答える 3

66

これは実際にはうまくいくはずです。Person は、同じスコープを共有するため、tr 要素とその子要素で使用できる必要があります。

これは私にとってはうまくいくようです:

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

http://jsfiddle.net/xEyJZ/

于 2013-03-14T14:16:12.383 に答える
8

実際、言及している文脈では「人」を使用できます。繰り返されるアイテムとその中のアイテムに存在します。その理由は、特定の要素のすべてのディレクティブが同じ $scope オブジェクトを共有するためです。ng-repeat の優先度は 1000 であるため、すでに $scope を作成して「person」をその中に入れているため、「person」は ng-class で使用できます。

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

http://plnkr.co/edit/ZI5Pv24U01S9dNoDulh6

于 2013-03-14T13:57:10.700 に答える