dojo/store (特に dojo/MemoryStore) 内のすべてのレコードを取得する組み込みの方法はありますか? 何かのようなもの:
store.query('*');
?
dojo/store (特に dojo/MemoryStore) 内のすべてのレコードを取得する組み込みの方法はありますか? 何かのようなもの:
store.query('*');
?
解決策は簡単です。Store インスタンスのクエリメソッドを呼び出します。
store.query();
dojo/store/util/SimpleQueryEngine のソース コードは次のとおりです。バージョン Dojo 1.8。ご覧のとおり、 queryがundefinedの場合、常に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 のソース コードを読む必要があります。答えが役立つことを願っています。:)
答えは非常に簡単なようです。データプロパティに直接アクセスするだけです。
var allData = store.data;
これはMemoryStoresで機能します。データのリモートロードが必要なストアで機能するかどうかはわかりません。