如何在ng-repeat中为变量设置类

时间:2015-12-10 16:44:08

标签: javascript angularjs for-loop ng-repeat

我有例如我在范围中描述的变量5,我做了围绕这个变量计算的范围,现在我必须显示这个变量并为这个变量设置css.class。我怎么能这样做?

我在code fiddle

中的示例

1 个答案:

答案 0 :(得分:2)

创建一个函数,该函数根据值返回首选的css类:

$scope.getClass = function(n) {
    /*example implementation*/
    if (n == 5) {
        return "red";
    } else {
        return "normal";
    }
  };

然后在ng-class属性中使用此函数:

<li ng-repeat="n in range(5,15)" ng-class="getClass(n)">test {{n}}</li>

jsfiddle

更新:

使用您的建议我修改了我的解决方案。你可以像这样解决你的问题: 假设您在范围内设置了值:

$scope.myvalue = 5;

然后在内部范围函数中你必须添加你的值(它可以在最后):

$scope.range = function(min, max, step){
    step = step || 1;
    var input = [];
    for (var i = min; i <= max; i += step) input.push(i);
    input.push($scope.myvalue); //insert value that has to be highlighted
    return input;
  };

然后将数组传递给ng-repeat:

<li ng-repeat="n in range(0, 9, 3) | orderBy:identity" ng-class="{'red' : n == myvalue}">test {{n}}</li>

并将其添加到控制器(以便orderBy工作):

$scope.identity = angular.identity;

如果你在1.3.0-rc5之上使用AngularJS,你可以简单地使用(没有实体声明)(见related answer):

<li ng-repeat="n in range(0, 9, 3) | orderBy" ng-class="{'red' : n == myvalue}">test {{n}}</li>

在这种情况下,您不再需要 getClass()功能了 - 您只需将n与myvalue进行比较。

fiddle with new solution