【问题标题】:ng-repeat date range filterng-repeat 日期范围过滤器
【发布时间】:2016-06-06 19:46:41
【问题描述】:

我正在使用ng-repeat 将数据与名称搜索过滤器绑定:

<div ng-repeat='myoldrecs in myoldrec | filter:q as results '>......</div>
$scope.myoldrec = [{name:ccc,date:13-02-2016},{name:ddd,date:14-02-2016}];
<input type="search" ng-model="q" placeholder="filter contacts..." class='form-control' style='width: 95%;'/>

到目前为止没问题,它工作正常。在此之后,我需要按日期范围(开始日期和结束日期)再添加一个过滤器。

添加第二个过滤器后:

<div ng-repeat='myoldrecs in myoldrec | filter:q as results |  myfilter:date1:date2 '>......</div>

上面的文本框有日期,但它给出了一个错误:

别名'结果| myfilter:date1:date2' 无效 --- 必须是有效的 JS 标识符,而不是保留名称。

我需要找到添加第二个过滤器并比较两个日期范围的解决方案。在我的情况下,日期不是 JSON,而是正常的日期格式,例如:10-02-2016。

【问题讨论】:

  • 你能告诉我们你的整个代码吗?或者更好的事件,添加一个snipet ot create plnkr
  • {name:ddd,date:14-02-2016} 我相信您无意中将数字“-2012”作为此处的日期传递。引用你的字符串。
  • 这是我的 plunker 示例,从这个示例中,我需要在日期范围内再添加一个过滤器。link@DanielBeck 和所有人。

标签: javascript jquery angularjs angularjs-filter


【解决方案1】:

最后,我提供了一种解决方案来过滤两个日期之间的日期范围,而不是使用更多过滤器,只需将字符串日期转换为日期对象并使用 if 语句大于或小于运算符。仍然它,对我来说工作正常.

<div ng-if="convertdateobj(data.timconverted) >= frmdate && convertdateobj(data.timconverted) <= todate">
   <!--ng-if="convertdateobj(data.timconverted) >= frmdate && data.timconverted <= todate" -->
 <table>
<tr><td>{{data.label0}} - </td><td>{{data.value0}} - </td><td>{{data.timeadded}}</td></tr>

</table>
</div>

控制器

$scope.convertdateobj = function(mydte){return new Date(mydte);});

另外,上面的 plunker 链接(我的最后一条评论)已更新为此解决方案。

【讨论】:

  • 这是plunker链接,link
猜你喜欢
  • 2014-10-20
  • 2014-02-06
  • 1970-01-01
  • 2023-03-27
  • 2016-10-27
  • 2014-11-17
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
相关资源
最近更新 更多