JavaScript | AngularJS:根据日期过滤结果过滤项目
JavaScript | AngularJS: Filter Items by Date-Filter Result
按日期筛选结果筛选项目
在ng-repeat
的内部,使用| date
过滤器过滤createdAt
属性。在ng-repeat
中,item in items
由term
得到| filter
。换句话说,我的代码看起来像这样:
<input placeholder="search" ng-model="term" />
<div ng-repeat="item in items | filter:term">
{{item.createdAt | date}}
</div>
很基本。date
过滤器接受2015-09-03T00:12:43.107Z
的(ISO?)日期,并返回类似Sep 2, 2015
的内容。
的场景:
item
显示过滤后的createdAt
文本,例如Sep 2, 2015。用户搜索"2"——并减少数组结果,只显示那些按日期结果过滤的项目符合他们的条件。
用户刚刚完成了按日期过滤项目——但更重要的是,根据date
过滤器的返回值,按对用户可见的日期过滤项目。
有没有一种方法可以在不编写自定义过滤器的情况下实现这一点-或者我需要使用使用$filter('filter')
&$filter('date')
?
可能是这样的:
item in items | filter:{date: (term | date:'ISO'), name: term}
// converts term back to ISO for matching (ideally)
我想这也应该知道编辑:您可以通过term
是一个日期之前尝试过滤它,因为term
也应该过滤items
,如果item.name
上也有匹配。date
过滤器运行文本值并返回相同的值。
Thanks in advance
What Worked For Me
由于我的需要是保持较低的复杂性,同时尽可能地使实现与本机filter
功能保持一致——我得出了以下结论:
不过滤显示日期:
<ul>
<li>
<input type="text" ng-model="q" />
</li>
<li ng-repeat="order in orders | filter:q">{{order.createdAt | date:'short'}}</li>
</ul>
根据显示的日期(和其他任何内容)进行过滤:
<ul>
<li>
<input type="text" ng-model="q" />
</li>
<li ng-repeat="order in orders | filter:q" ng-init="order['|'] = { createdAt: (order.createdAt | date:'short') }">{{order['|'].createdAt}}</li>
</ul>
这个工作得很好,因为我不需要对进行任何专门化——只需用一个额外的属性(在|
命名空间下面)初始化迭代,当用户的输入发生变化时,Angular会自动过滤它。现在用户可以根据他们看到的或任何其他属性进行过滤。
干杯!
相关文章:
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- 如何从Wijmo过滤flexgrid中的日期
- 过滤日期范围 angularjs 时出错
- AngularJS过滤格式化的日期
- 在JavaScript中,按日期和之后的名称过滤数组
- 如何在 Angular js 中按日期过滤数据
- JavaScript 智能日期过滤
- 按输入日期过滤 ng 重复
- 拉拉维尔角度如何过滤碳串上的日期
- Dojo 网格:将过滤条件发送到服务器,具有有效日期
- 如何使用角度js按月和年正确过滤日期
- 酒窝.js使用日期范围过滤 X 轴
- 角度JS过滤日期
- ng 表过滤毫秒日期数据
- angular - 过滤开始日期和结束日期在所选月份和年份范围内的所有对象
- 如何使用php和mysql过滤高图表中的日期
- 如何使用AngularJS过滤日期范围
- 如何使用JS/Jquery过滤日期和JSon数据
- 使用angularjs过滤日期时出现ReferenceError
- Angularjs orderBy filter 无法正确过滤日期