4

我有一个显示数据的视图,我想在我的视图中的列表项上添加另一个类。

<input type="text" class="filter" placeholder="search..." ng-model="search">
<ul>
    <li ng-repeat="item in items | filter:search | orderBy:'date'">
        {{ date }} {{ item.heading }}<button ng-click="deleteItem(item.ID)"><i class='icon-trash'></i></button>
    </li>
</ul>

我有一个名为item.date的变量,我想将它与今天的另一个变量进行比较。这是逻辑:

if (item.date - today <= 0) 
    apply class1 
if else (item.date - today > 0 && item.date - today <= 3)
    apply class2
and so on

我怎样才能用角度来实现这一点?我可以将此逻辑直接放入我的视图中还是需要在我的控制器中定义它?

提前致谢

4

2 回答 2

12

由于您要进行一些繁重的比较,因此我建议将其移至函数中,而不是将其放在 HTML 中:

<li ng-class="getClass(item.date)" 
    ng-repeat="item in items | filter:search | orderBy:'date'">

JS:

$scope.getClass = function(date){
    /* comparison logic here*/
    /* returs class name as string */
}
于 2013-08-13T11:46:00.003 回答
5

我认为你可以ng-class这样使用:

HTML

<li ng-class="{'class1': item.date - today <= 0, 'class2': (item.date - today > 0 && item.date - today <= 3)}"></li>

或将其移动到这样的函数中:

HTML

<li ng-class="getClass(item.date)"></li>

JS

$scope.getClass = function(date){
    return {'class1': item.date - today <= 0, 'class2': (item.date - today > 0 && item.date - today <= 3)};
}
于 2013-08-13T12:58:18.263 回答