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”放入其中,因此 ng-class 可以使用“person”。

看到这个Plnkr:

http://plnkr.co/edit/ZI5Pv24U01S9dNoDulh6

于 2013-03-14T13:57:10.700 回答
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>
于 2018-01-31T21:42:04.463 回答