AngularJS现有的ng-repeat过滤器

时间:2016-03-03 15:45:06

标签: javascript angularjs

请在这里查看我的问题.....

AngularJS DateRange - how to include the end date

如何将此功能添加到现有的ng-repeat区域设置中?当前过滤仅通过单个文本框进行 - 搜索。需要将日期和日期添加到过滤器中。

非常感谢帮助。

NG-REPEAT

<div class="itemlist" data-token="{{data.token}}" ng-repeat="data in filtered = (list | filter:search | orderBy : predicate :reverse) | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit" data-name="{{data.customerName}}" ng-click="eventHandler(data, $event)"> 

搜索框

<input type="text" ng-model="search" ng-change="filter()" class="form-control" placeholder="Search for...">

我尝试将NG-REPEAT改为以下但是它不起作用,模型datef / datet输入框在这个例子中没有显示......但它们确实存在。< / p>

<div class="itemlist" data-token="{{data.token}}" ng-repeat="data in filtered = (list | filter:search | myfilter:{from: datef, end: datet} | orderBy : predicate :reverse) | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit" data-name="{{data.customerName}}" ng-click="eventHandler(data, $event)"> 

1 个答案:

答案 0 :(得分:0)

我认为问题在于您是如何将过滤器添加到ng-repeat的。这个语法对我来说有点陌生,但我在这个codepen

中得到了它

这个的核心是理解你试图执行的表达式。我问了一个评论:

  

根据我的理解,我是否正确a)按日期范围过滤(starDate thru endDate)&amp; b)您希望根据键/值搜索

过滤那个“过时的”数据集

您回复:

  

就是这样......

话虽这么说,理解过滤器和表达式的最好方法是将它们视为一个逻辑位链。所以对此:

listData | dateRange:startDate:endDate | filter:filterCriteria

这样做:

  1. 获取来源listData
  2. 将生成的数组传递给您定义的dateRange过滤器
  3. 将生成的数组传递给内置的角度filter过滤器(它们很难命名为btw)
  4. 最后一点是获取该逻辑链的结果并将其传递给ng-repeat进程。所以在这种情况下:

    ng-repeat="obj in filtered = listData | range:startDate:endDate | filter:filterBy"
    

    注释

    在我的示例中,我没有添加分页orderBy过滤器。但是你的初始过滤值包含在括号内......

    (list | filter:search | myfilter:{from: datef, end: datet} | orderBy : predicate :reverse)
    

    ...可能会从括号中删除,因为您只是将每个过滤器的返回值传递给过滤器链。