使用AngularJS和MomentJS实时过滤结果

时间:2014-10-23 10:56:14

标签: javascript angularjs momentjs

我有一个ng-repeat列表结果,但我的目的只是显示包含今天日期的元素。

我当前的设置可以执行此操作,但需要重新加载页面以重新定义时间变量,从而过滤结果。

说实话,我不确定这样的实时过滤器(当00.00列表自动变为空时)可以完成,所以如果你能透露一些信息,我将非常感激。问题。

这是我目前的布局:

   <div class="row msf-row" 
     ng-repeat="record in recordlist | filter: search | filter: record.date = dateJson " 
     ng-class="{ 'msf-cancelled': record.cancelled}">
      <div class="col-md-1">{{record.date}}</div>
      <div class="col-md-1"><strong>{{record.car}}</strong></div>
      <div class="col-md-2">{{record.driver}}</div>
      <div class="col-md-2">{{record.from}}</div> 
   </div>

相关的JS:

 $scope.dateJson = moment().format("YYYY MM DD");
 $scope.addRecord = function () {
    $scope.recordlist.push(
            {
                date: $scope.dateJson, 
                car: $scope.carList.code, 
                driver: $scope.driverList.name,
                from: $scope.locationList.place,
                destination: $scope.locationList2.place, 
                pax: $scope.paxList
            }
        );
   jsonToRecordLocalStorage($scope.recordlist);
};

基本上,过滤器将$ scope.dateJson与对象属性record.date进行比较并过滤结果,但当然date.Json仅在页面重新加载时加载,而不是实时加载。

任何输入?

1 个答案:

答案 0 :(得分:0)

您可以定义自己的过滤器功能,例如http://davidjs.com/2014/02/how-to-call-any-function-as-a-filter-in-angularjs/

此过滤器功能看起来像这样

    $scope.filterRecordsByDate = function(record) {
     var date = moment(); 
     //reset to midnight
     date.set('hours', 0).set('minutes', 0).set('seconds', 0);

     //you might need to reset to midnight also the property 'record.date'
     return record.date == date;
    }

然后在你的HTML

ng-repeat="record in recordlist | filter: search | filter: filterRecordsByDate "