2

dojo/store (特に dojo/MemoryStore) 内のすべてのレコードを取得する組み込みの方法はありますか? 何かのようなもの:

store.query('*');

?

4

2 に答える 2

3

解決策は簡単です。Store インスタンスのクエリメソッドを呼び出します。

store.query();

dojo/store/util/SimpleQueryEngine のソース コードは次のとおりです。バージョン Dojo 1.8。ご覧のとおり、 queryundefinedの場合、常に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 のソース コードを読む必要があります。答えが役立つことを願っています。:)

于 2012-10-23T01:55:39.387 に答える
1

答えは非常に簡単なようです。データプロパティに直接アクセスするだけです。

var allData = store.data;

これはMemoryStoresで機能します。データのリモートロードが必要なストアで機能するかどうかはわかりません。

于 2012-10-22T10:02:14.850 に答える