ExtJS 4 проблемы с обновлением формы новой созданной записи в магазине - loadRecord updateRecord - PullRequest
1 голос
/ 16 ноября 2011

У меня проблемы с сохранением формы в магазине.Форма загружает запись для редактирования существующей записи или является пустой для новой записи.Редактирование существующей записи работает нормально.Создание нового тоже отлично работает.У меня возникают проблемы, если я хочу редактировать и обновлять вновь созданную запись без закрытия и повторного открытия формы.

Я предполагаю, что проблема в том, что идентификатор записи в хранилище назначается через удаленный сервер.Форма содержит копию модели и не обращает внимания на изменение идентификатора.

Есть идеи, как сохранить форму и магазин в синхронизации?

Используется следующий коддля сохранения:

var basicForm = this.up('form').getForm(),
record = basicForm.getRecord();

if (basicForm.isValid()) {

    if (!record) {
        record = Ext.data.StoreManager.lookup('theModel').add( this.up('form').getForm().getFieldValues())[0];
        basicForm.loadRecord(record);
    } else {
        basicForm.updateRecord(record);
    }
}

1 Ответ

1 голос
/ 16 ноября 2011

Чтобы продолжить ваш пример, вы можете прослушать событие записи в хранилище:

var basicForm = this.up('form').getForm(),
record = basicForm.getRecord(), 
store = Ext.data.StoreManager.lookup('theModel'); // We'll add a field for simplicity
store.on('write', onTheModelWrite);

if (basicForm.isValid()) {

    if (!record) {
        record = Ext.data.StoreManager.lookup('theModel').add(this.up('form').getForm().getFieldValues())[0];
        basicForm.loadRecord(record);
    } else {
        basicForm.updateRecord(record);
    }
}

var onTheModelWrite = function(s, o)//Here Ext passes the store and the options passed to save()
{
    record = s.getAt( s.indexOf(record) ); //We use getAt() because we don't know the id
    basicForm.loadRecord(record);
}

Вы, конечно, должны все это охватить, но, надеюсь, вы поняли идею.

...