我有一个显示对象集合的ng-repeat列表。 我实现了一个过滤器,使列表只显示今天插入的对象。它看起来像这样:
<div class="row msf-row"
ng-repeat="record in recordlist | filter: record.date = dateJson">
这太棒了。我的问题是,我想要显示今天记录的两个对象,以及没有财产到达的记录(因为它们可能已经在昨天引入,但它们需要标记为已到达)。
我已经尝试了这个但直到今天00.00才知道它是否正确。
<div class="row msf-row"
ng-repeat="record in recordlist |
filter: record.date = dateJson ||
record.date != dateJson && !record.arrival">
这有意义吗?
答案 0 :(得分:1)
当你的标记中的表达式开始变得过度时,是时候重构了。您应该在控制器中定义一个执行所需检查的功能:
$scope.shouldShow = function(record) {
return record.date == dateJson ||
(recode.date != dateJson && !record.arrival);
}
(注意:这个条件是多余的;你可以缩短它):
return record.date == dateJson || !record.arrival;
然后在过滤器中使用它:
<div class="row msf-row" ng-repeat="record in recordlist | filter:shouldShow">
这样您就可以在不编辑视图的情况下更新逻辑。
答案 1 :(得分:0)
如果您要创建自定义过滤器,可以试试这个。在这里我假设
app = angular.module('yourModuleName', [])
或app = angular.module('yourModuleName')
(之后,如果您之前已经实例化过您的模块)
<div class="row msf-row" ng-repeat="record in recordlist | customFilter:dateJson">
app.filter('customFilter', function(){
return function(records, dateJson){
return records.filter(function(item, index, array){
return item.date == dateJson || (item.date != dateJson && !item.arrival);
});
}
})
免责声明:我还没有测试过此代码。