【发布时间】:2016-07-08 00:02:44
【问题描述】:
我无法理解使用 $filter 或 $grep 进行深度过滤。
我有一个 Store 对象数组,每个 Store 对象都包含一个 Orders 数组:
vm.Stores:
[{
Stores: [{
Id: 1,
Orders: [{
Id: 11,
Selected: true
}, {
{
Id: 12,
Selected: false
}]
}, {
Id: 2,
Orders: [{
Id: 21,
Selected: false
}, {
{
Id: 22,
Selected: true
}]
}],
}]
我想要一个选定属性为 true 的 Orders 数组:
vm.selectedOrders:
[{
Id: 11,
Selected: true
}, {
Id: 22,
Selected: true
}]
这就是我正在尝试的:
vm.selectedOrders = $filter('filter')(Stores.Orders, {'selected': true});
显然不正确。我尝试过的其他方法是嵌套的 forEach 循环,但我经常使用这些命令,所以我需要一种有效的方法来做到这一点。
我已经尝试将订单展平为他们自己的数组,但现在我正在管理另一个对象数组,它不是我的 html 中使用的对象数组,所以它不匹配。
文档没有帮助。过滤器有很多用途,但似乎都不适合我 https://docs.angularjs.org/guide/filter
而且参数解释意义不大
https://docs.angularjs.org/api/ng/filter/filter
例子是
- 基于量角器
- 甚至不包含 $filter('filter')!
什么是比较器?
【问题讨论】:
-
我面前没有 Angular 项目……但如果我没记错的话,你应该可以去
Stores[0].Orders。如果是这样,您可以遍历商店并建立选定的订单。您仍然会循环,但只会在每个Store上循环。
标签: javascript arrays angularjs angularjs-filter