JavaScript | AngularJS:按日期过滤结果过滤项目
JavaScript | AngularJS: Filter Items by Date-Filter Result
按日期筛选结果筛选项目
在 ng-repeat
内部,createdAt
属性 使用 | date
过滤器进行过滤。在 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
和 return 的(ISO?)日期,类似于 Sep 2, 2015
。
期望的场景:
item
显示过滤后的 createdAt
文本,例如 2015 年 9 月 2 日。
用户搜索“2”——并减少数组结果以仅显示那些按日期过滤结果符合他们条件的项目。
用户刚刚在 日期 之前完成过滤项目 -- 但更重要的是,在 用户可见的日期 之前过滤了项目] 基于 date
过滤器的 return 值。
有没有一种方法可以在不编写自定义过滤器的情况下完成此操作——或者我是否需要使用利用 $filter('filter')
& $filter('date')
的过滤器?
可能是这样的:
item in items | filter:{date: (term | date:'ISO'), name: term}
// converts term back to ISO for matching (ideally)
我想这也应该知道 term
是否是 一个日期,然后再尝试过滤它,因为 term
也应该如果 item.name
上也有匹配项,则过滤 items
。
编辑:您可以 运行 通过 date
过滤器的文本值并具有相同的值 returned.
提前致谢
什么对我有用
由于我的需要是保持低复杂性,同时尽可能使实现与本机 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 会在用户输入更改时自动过滤。现在,用户可以按他们看到的内容 或任何其他 属性 进行过滤。
干杯!
按日期筛选结果筛选项目
在 ng-repeat
内部,createdAt
属性 使用 | date
过滤器进行过滤。在 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
和 return 的(ISO?)日期,类似于 Sep 2, 2015
。
期望的场景:
item
显示过滤后的 createdAt
文本,例如 2015 年 9 月 2 日。
用户搜索“2”——并减少数组结果以仅显示那些按日期过滤结果符合他们条件的项目。
用户刚刚在 日期 之前完成过滤项目 -- 但更重要的是,在 用户可见的日期 之前过滤了项目] 基于 date
过滤器的 return 值。
有没有一种方法可以在不编写自定义过滤器的情况下完成此操作——或者我是否需要使用利用 $filter('filter')
& $filter('date')
的过滤器?
可能是这样的:
item in items | filter:{date: (term | date:'ISO'), name: term}
// converts term back to ISO for matching (ideally)
我想这也应该知道
编辑:您可以 运行 通过 term
是否是 一个日期,然后再尝试过滤它,因为 term
也应该如果 item.name
上也有匹配项,则过滤 items
。date
过滤器的文本值并具有相同的值 returned.
提前致谢
什么对我有用
由于我的需要是保持低复杂性,同时尽可能使实现与本机 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 会在用户输入更改时自动过滤。现在,用户可以按他们看到的内容 或任何其他 属性 进行过滤。
干杯!