2017-01-04 51 views
0

我已经为日期范围创建了名为myFilter的自定义过滤器。如何在加载AngularJS时停止对自定义过滤器的过滤

app.filter('myFilter',function($filter){ 
    return function(items, from, to){ 
     return $filter('filter')(items, 'start_date', function(v){ 
      var date = new Date(v); 
      return date >= moment(from) && date <= moment(to); 
     }); 
     return false; 
    }; 
}); 

直到选择日期范围才显示数据。我想在加载页面时显示所有数据。这里是我使用的过滤器:

<div ng-repeat="project in projects | myFilter: projectfilterstartdate : projectfilterenddate | filter: project_type_filter" > 
+2

控制器加载时,可能'projectfilterstartdate'或'projectfilterenddate'或两者都为null,因此所有条目都被过滤掉。尝试设置控制器第一次加载时的默认值。 –

+0

如果我们设置默认值,它将不会显示所有的数据? – Kranthi

+1

取决于你给他们什么样的价值。 –

回答

1

@Muli谢谢你的信息。我最初定义了这样的值。它正在工作。

app.filter('myFilter',function($filter){ 
     return function(items, from, to){ 
      var start_date = (from && !isNaN(Date.parse(from))) ? Date.parse(from) : 0; 
      var end_date = (to && !isNaN(Date.parse(to))) ? Date.parse(to) : new Date().getTime(); 
      return $filter('filter')(items, 'start_date', function(v){ 
       var date = new Date(v); 
       return date >= moment(start_date) && date <= moment(end_date); 
      }); 
     }; 
});