0

我有一个像这样声明的“dstore/Memory”对象:

this.flightStore = new Memory({
    data: flights,
    idProperty: 'myId'
});

我想取回一个过滤的集合来显示。所以我写这个:

var test = this.flightStore.filter({matchType:view});

这将返回一个“测试”对象,但“数据”字段为空。然而,当我编写相同的代码但添加了一个 forEach 函数时:

this.flightStore.filter({matchType:view}).forEach(function(flight) { ... }

这完美地工作,我得到了我的过滤结果一个一个。从那里我可以为我的过滤集合构建一个数组。我很好奇为什么我的第一行不起作用,以及是否有办法让它工作而不必遍历每个结果并手动构建我的数组。

谢谢!

4

1 回答 1

0

filter方法仅应用过滤器,不获取数据。该forEach方法获取数据并将回调应用到它。如果您想在应用过滤器后获取数据,请调用fetch

var dataPromise = this.flightStore.filter({matchType: view}).fetch();

如果您使用的是同步存储 ( dstore/Memory),则该fetchSync方法可用:

var testData = this.flightStore.filter({matchType: view}).fetchSync();
于 2020-05-19T05:04:55.737 回答