клонирование / копирование хранилища данных Dojo - PullRequest
0 голосов
/ 08 сентября 2011

Привет, может кто-нибудь, пожалуйста, скажите мне, как скопировать одно хранилище данных в другое в Dojo.Я попробовал это следующим образом, но это не работает.Здесь я пытаюсь скопировать данные из 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);
        }
        }
    }
}

1 Ответ

1 голос
/ 08 сентября 2011

На основании комментариев, указанных выше.Вы пытаетесь скопировать значения в новое хранилище по одной причине, чтобы иметь возможность определить, какие значения имеют изменения, а затем сохранить их по отдельности, не отправляя все хранилище.

Этот подход совершенно неверен.

Dojo имеет isDirty() и предлагает вам возможность revert() магазина вернуться к его первоначальным значениям.Он знает, какие значения изменились, и вам не нужно это делать.

Взгляните на стандартный болот IFWS здесь: http://docs.dojocampus.org/dojo/data/ItemFileWriteStore

Убедитесь, что вы все прочитали отсюда: http://docs.dojocampus.org/dojo/data/ItemFileWriteStore#id8

То, что вы хотите сделать, - это создать свой собственный метод _saveCustom, которым вы будете переопределять свой магазин, а затем, когда вы сохраните, вы сможете увидеть, какие значения изменились.

Нажмите на демонстрацию в самом низу страницы.Он показывает вам, как это сделать с помощью _saveCustom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...