有没有内置的方法来获取 dojo/store(尤其是 dojo/MemoryStore)中的所有记录?就像是:
store.query('*');
?
解决方案很简单。调用 Store 实例的查询方法。
store.query();
这里是dojo/store/util/SimpleQueryEngine的源码。版本 Dojo 1.8。如您所见,如果查询未定义,它将始终返回True。
switch(typeof query){
default:
...
case "object": case "undefined":
var queryObject = query;
query = function(object){
for(var key in queryObject){
var required = queryObject[key];
if(required && required.test){
// an object can provide a test method, which makes it work with regex
if(!required.test(object[key], object)){
return false;
}
}else if(required != object[key]){
return false;
}
}
return true;
};
break;
case "string":
...
case "function":
...
}
function execute(array){
// execute the whole query, first we filter
var results = arrayUtil.filter(array, query);
...
...
return results;
}
如果文档混淆或丢失,则有必要阅读 dojo 源代码。希望答案会有所帮助。:)
似乎答案非常简单。您只需直接访问 data 属性。
var allData = store.data;
这适用于 MemoryStores。我不知道它是否适用于需要远程加载数据的商店。