0

こんにちは、dojo で 1 つのデータ ストアを別のデータ ストアにコピーする方法を教えてください。以下の方法で試してみましたが、うまくいきません。ここでは、jsonStore から newGridStore にデータをコピーしようとしています。

jsonStore.fetch({query:{} , onComplete: onComplete});

var onComplete = function (items, request) {
    newGridStore = null;
    newGridStore =  new dojo.data.ItemFileWriteStore({
        data : {}
    });
    if (items && items.length > 0) {
    var i;
    for (i = 0; i < items.length; i++) {
        var item = items[i];
        var attributes = jsonStore.getAttributes(item);
        if (attributes && attributes.length > 0) {
            var j;
            for (j = 0; j < attributes.length; j++) {
                var newItem = {};
                var values = jsonStore.getValues(item, attributes[j]);
                if (values) {
                    if (values.length > 1) {
                    // Create a copy.
                    newItem[attributes[j]] = values.slice(0, values.length);
                    } else {
                        newItem[attributes[j]] = values[0];
                    }
                }
            }
        newGridStore.newItem(newItem);
        }
        }
    }
}
4

1 に答える 1

1

上記のコメントに基づいています。ストア全体を送信することなく、どの値が変更されたかを検出して個別に保存できるという単一の理由で、値を新しいストアにコピーしようとしています。

このアプローチは完全に間違っています。

Dojo には、ストアを元の値に戻すisDirty()機能があります。revert()どの値が変更されたかを認識しており、これを行う必要はありません。

ボグ標準の IFWS をここで見てみましょう: http://docs.dojocampus.org/dojo/data/ItemFileWriteStore

ここからすべてを読んでください: http://docs.dojocampus.org/dojo/data/ItemFileWriteStore#id8

やりたいことは_saveCustom、ストアをオーバーライドする独自のメソッドを作成することです。保存すると、変更された値を確認できます。

ページの一番下にあるデモをクリックします。_saveCustom を使用してそれを行う方法を正確に示します

于 2011-09-08T11:04:27.123 に答える