2012-05-17 2 views
2

После синхронизации() обновление только одной строки, которая была изменена, но не всех из ответа.Как обновить все свойства после store.sync()?

Модель:

Ext.define('Exp.model.ProfileChannel', { 
    extend: 'Ext.data.Model', 
    fields: ['id', 'channel', 'server', 'profile'], 

    proxy: { 
     type: 'ajax', 
     api: { 
      read: '/profilechannel/list', 
      update: '/profilechannel/save' 
     }, 
     reader: { 
      type: 'json', 
      root: 'data' 
     } 
    } 
}); 

Магазин:

Ext.define('Exp.store.ProfileChannels', { 
    extend: 'Ext.data.Store', 
    model: 'Exp.model.ProfileChannel', 
    autoSync: true 
}); 

Допустим, в магазине у меня есть запись, как это:

{ 
    id: '1', 
    profile: 'profile id', 
    channel: '', 
    server: '' 
} 

затем после: record.set('channel', 'channel id');

ответ:

{ 
    "success":true, 
    "data":[ 
     { 
      id: '1', 
      profile: 'profile id', 
      channel: 'channel id', 
      server: 'server id added on backend' 
     } 
    ] 
} 

И в конце концов, у меня есть запись так:

{ 
    id: '1', 
    profile: 'profile id', 
    channel: 'channel id', 
    server: '' 
} 

Таким образом, проблема в том, как я могу обновить и значение сервера У меня есть новое значение в ответ. это ошибка? или я делаю это неправильно? почему я должен поместить все свойства, если extjs игнорирует их?

+0

Как вы прошли мимо этого? Возможный дубликат здесь: http://stackoverflow.com/questions/16219638/store-sync-with-new-record-does-not-import-server-generated-fields-in-response – HDave

ответ

2

Он должен вести себя именно так, как вы ожидаете. Все записи, возвращаемые из хранилища после процедуры обновления, должны заменить локальные копии, которые вы, возможно, уже имеете в хранилище. Вы можете проверить код ExtJs и отладить его, чтобы понять, что не так.

Я определенно использую ту же логику с ExtJs 4.0.7. Возможно, что-то сломано это 4.1, или вам может понадобиться настроить некоторые настройки в вашем магазине/прокси.

+0

Вы уверены, что в 4.0.7 работал сюда? – Vytautas

+0

Абсолютно. 100%. Но опять же - сначала это не сработало в моем проекте. Мне пришлось отслеживать проблему, когда мой читатель не настроен должным образом. Как только записи были правильно проанализированы из ответа - все становится очень блестящим и приятным – sha

+0

Просто протестировано с 4.0.7, и оно работает так, что это ошибка или что-то изменилось. – Vytautas

0

У меня также была проблема с тем, что записи не обновлялись на 4.1. после некоторой отладки я узнал, что все поля модели extjs должны возвращать в ответе сервера!

extjs не выдавал никаких ошибок, только обратный вызов отказа на store.sync() и record.save() выдают мне ошибку. было трудно найти ...