给出http://dojotoolkit.org/reference-guide/1.9/dojo/store/util/SimpleQueryEngine
中的示例SimpleQueryEngine(function(object){
return object.id > 1;
})(someData) // Returns an array with matching objects
我正在使用 DataStore http://livedocs.dojotoolkit.org/dojo/store/DataStore
DataStore包含 ItemFileWriteStore http://livedocs.dojotoolkit.org/dojo/data/ItemFileWriteStore
类型的商店我正在尝试以下方法:
var myNumber = 12; // but could be any number like -12, 0.12, 12345 or -12345.1
dataStore.store.query(function(storeItem){
return storeItem.number < myNumber;
})
并且这确实不起作用。
据我所知,SimpleQueryEngine使用dojo / _base / array,它使用一个过滤方法,该方法接受数组和回调函数等参数进行过滤。
正如您在此处看到的那样:https://github.com/dojo/dojo/blob/master/store/DataStore.js,DataStore使用SimpleQueryEngine,因此它应该可以工作......
我的商店包含以下对象:
[{id: 1, number: 2345},{id: 2, number: 23.45},{id: 3, number: -2345},{id: 4, number: 2345},{id: 5, number: 0.2345}]
我想查询给定商店以查找小于给定数字的数字。
澄清我真正想要理解的是为什么将函数作为参数传递给query()方法不起作用以及如何使其工作。
谢谢,
答案 0 :(得分:2)
由于你有一个ItemFileWriteStore
,你可以使用它的名为fetch
的函数。它可能能够做你需要的。假设store
是您的ItemFileWriteStore
,您可以这样做:
store.fetch({
sort: [{attribute: "number", descending: true}]
onComplete: function(items, request) {
// items will be an array of the items in your store,
// sorted by the "number" attributed in descending order
}
});
在onComplete
函数中,您将根据number参数按降序排列存储项目数组。在这一点上,找到所有小于指定数字的数字(而不是你所说的只有1)是微不足道的。