使用ng函数的麻烦

Trouble using ng-functions

本文关键字:麻烦 函数 ng 使用      更新时间:2023-09-26

所以我有3个html页面(有3个不同的角控制器),每个页面显示一个表的行,在每个页面上的行应该显示红色或绿色(根据errorstate):

<tr ng-repeat-start="case in entries | filter:searchCase | orderBy:'-id' track by case.id" ng-class='setRowColor(case.errorstate_id)'>
    <td>{{case.name}}</td>
    ........
</tr>
<tr ng-if="case.expanded" ng-repeat-end="">
    <td colspan="3">{{case.errormessage}}</td>
</tr>

现在有3个setRowColor方法(每个控制器一个)是没有意义的,但是我也不能创建一个工厂服务,因为我不能在ng-class中调用它。

所以我的想法是做一个正常的JS函数,只是使用class而不是ng-class,但这似乎不与ng-repeat一起工作。

方法如下:

function setRowColor(col) {
    return {passed: col == '0', failed: col != '0'};
};

而我有一个.passed.failed类在我的样式表

是否有办法让class工作?或者有更好的方法来解决我的问题吗?

函数setRowColor应该在控制器的$scope中定义。

$scope.setRowColor = function() {
    ...
};

为了保持这个函数只有一个定义,你应该创建一个AppController,它将被设置在body标签上:

<body ng-controller="AppController">
    ...

AppController中定义上述函数,您的问题应该可以解决。

在ng类中使用三元制如何?

<tr ng-class="case.errorStateId===0 ? 'passed' : 'failed'"
  ng-repeat-start="case in entries | filter:searchCase | orderBy:'-id' track by case.id">
    <td>{{case.name}}</td>
    ........
</tr>