【问题标题】:apply ngClass to element where ngRepeat is declared将 ngClass 应用于声明 ngRepeat 的元素
【发布时间】:2014-12-11 20:54:35
【问题描述】:

我有一个使用 AngularJS ngRpeat 生成行的表:

<tr ng-repeat="player in division">
  <td>{{player.name}}</td>
  <td>{{player.score}}</td>
</tr>

数组看起来有点像这样:

$scope.divison = [
  {
    name: "John Doe",
    score: "10",
    goingUp : true
  },
  {
    name: "Bob Marley",
    score: "20"
  }
];

现在,如果我想根据特定的ng-repeatng-class 应用于表格行怎么办?尽管这可能可行,但我会认为:

<tr ng-repeat="player in division" ng-class="'goingUp' : player.goingUp">
  <td>{{player.name}}</td>
  <td>{{player.score}}</td>
</tr>

唉,这行不通。可能是因为 ng-class 不在该重复元素内。我怎样才能让它工作呢?

【问题讨论】:

  • 试试:ngclass="(player.goingUp) ? 'goingUp' : ''"
  • ng-class="{'goingUp' : player.goingUp}"
  • @Second2None 谢谢,我只是错过了那些括号。如果您想将其作为答案发布,我将接受它作为正确的语法和最简单的方法。
  • 这是一个错误。 github.com/angular/angular.js/issues/2368 尚不清楚该修复是否在当前版本中。

标签: javascript html arrays angularjs


【解决方案1】:

它应该能够像this 一样做到这一点。您可以在您的控制器范围内编写一个返回适当类的函数:

$scope.isGoingUp = function(player)
{
  if (player.goingUp) return "goingUp";
  return "notGoingUp";
}

然后这样称呼它

ng-class="isGoingUp(player)"

【讨论】:

  • 感谢您的回答。虽然这种方法可能有效,但简单地添加括号对我有用并且更容易。
【解决方案2】:

正确的语法是

ng-class="{'goingUp' : player.goingUp}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多