我有以下过滤器,它看了两次,从另一个减去一个,如果数字大于0则过滤器通过
这是代码
delayControllers.filter('customDelayFilter', function() {
return function(data) {
return data.filter(value => (new Date(value.etd) - new Date(value.std)) > 0);
};
});
谷歌控制台中的错误被抛出
无法读取未定义的属性“过滤器”
在phpstorm中=>显示错误,>符号(表达预期)
现在这就是问题,这段代码在运行时完全符合预期。我用
来称呼它 <tr ng-repeat="service in listOfServices | customDelayFilter">
我只获得行etd - std大于0的结果。在任何设备上除了IOS。当我删除这个过滤器时,页面在IOS上工作正常,所以看起来像IOS上的Safari一样挑剔错误
有没有更简洁的方法来重写上面的过滤器,这是我几周前提出的一个帖子中提供的(现已关闭)
答案 0 :(得分:2)
您的过滤器需要定义的数组。我怀疑listOfServices
在ng-repeat
第一次运行时可能尚未初始化,具体取决于您初始化它。
要么确保初始化listOfServices
,要么在过滤器中添加一个检查,即
delayControllers.filter('customDelayFilter', function() {
return function(data) {
if (data) {
return data.filter(value => (new Date(value.etd) - new Date(value.std)) > 0);
}
else {
return [];
}
};
});