角度自定义过滤器可以工作,但代码会抛出错误

时间:2016-12-16 16:05:59

标签: javascript angularjs filter

我有以下过滤器,它看了两次,从另一个减去一个,如果数字大于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一样挑剔错误

有没有更简洁的方法来重写上面的过滤器,这是我几周前提出的一个帖子中提供的(现已关闭)

1 个答案:

答案 0 :(得分:2)

您的过滤器需要定义的数组。我怀疑listOfServicesng-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 [];
      }
  };
});