После того, как запись станет грязной, хранилище фиксирует все поля

Я меняю некоторые значения записи и потом устанавливаю ее как грязную. Хотя установите writeAllFields в поля (что отлично работает, если я редактирую свои данные через форму редактирования).

Метод контроллера:

activateDeactivate: function(grid, selection, active) {
    for(var i = 0; i < selection.length; i++) {
        selection[i].data.status = (active) ? 1 : 0;
        selection[i].setDirty();
    }
    var store = this.getStore('Creatives');
    store.sync();
}

Автор магазина:

writer:{
        type:'json',
        writeAllFields:false,
        allowSingle: false //  always wrap data in an array
        //root: 'data'
    }

Обновленный метод контроллера:

activateDeactivate: function(grid, selection, active) {
    for(var i = 0; i < selection.length; i++) {
        selection[i].data.status = (active) ? 1 : 0;
        values = selection[i].data;
        selection[i].set(values);
    }
    var store = this.getStore('Creatives');
    store.sync();
}

person Julian Hollmann    schedule 27.03.2012    source источник


Ответы (1)


Вам не нужно замарать всю пластинку. Вы можете просто set() новые значения. Если они грязные, это определяется путем сравнения Record.modified с Record.data.

person AndreKR    schedule 27.03.2012
comment
Пожалуйста, смотрите мое обновление. Он просто ничего не отправляет на мой сервер. - person Julian Hollmann; 27.03.2012
comment
Так он отправляет все поля или вообще ничего? Вы должны задавать по одному вопросу за раз. - person AndreKR; 27.03.2012
comment
На мой сервер не отправляется запрос ajax, если я не устанавливаю записи как грязные. - person Julian Hollmann; 27.03.2012
comment
Я предполагаю, что set работает неправильно, потому что вы вмешиваетесь в частную собственность data. См. docs.sencha. .com/ext-js/4-0/source/, особенно часть, начинающаяся с currentValue = me.get(fieldName);. - person AndreKR; 27.03.2012