2012-05-17 3 views
2

Après synchronisation() mise à jour juste cette ligne qui est modifiée mais pas tous de la réponse.Comment mettre à jour toutes les propriétés après store.sync()?

Modèle:

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' 
     } 
    } 
}); 

magasin:

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

Disons que en magasin j'ai dossier comme ceci:

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

puis après: record.set('channel', 'channel id');

réponse:

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

Et à la fin, j'ai enregistrement comme ceci:

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

Le problème est de savoir comment puis-je mettre à jour et de la valeur du serveur je nouvelle valeur en réponse. est-ce un bug? ou je le fais mal? pourquoi devrais-je mettre toutes les propriétés si extjs les ignore?

+0

Comment avez-vous passé avec ça? Copie possible ici: http://stackoverflow.com/questions/16219638/store-sync-with-new-record-does-not-import-server-generated-fields-in-response – HDave

Répondre

2

Il devrait se comporter exactement comme vous l'attendez. Tous les enregistrements renvoyés par le magasin après la procédure de mise à jour doivent remplacer les copies locales que vous avez peut-être déjà dans le magasin. Vous pourriez vouloir vérifier le code d'ExtJs et le déboguer pour voir ce qui ne va pas. J'utilise définitivement la même logique avec ExtJs 4.0.7. Il est possible que quelque chose soit cassé 4.1, ou que vous ayez besoin d'ajuster une configuration dans votre magasin/proxy.

+0

Êtes-vous sûr dans 4.0.7 travaillé par ici? – Vytautas

+0

Absolument. 100%. Mais encore une fois - cela n'a pas fonctionné au début dans mon projet. J'ai dû tracer le problème avec mon lecteur n'étant pas configuré correctement. Dès que les enregistrements ont été analysés correctement à partir de la réponse - tout devient très brillant et agréable – sha

+0

Juste testé avec 4.0.7 et cela fonctionne donc c'est un bug ou quelque chose de changé. – Vytautas

0

J'ai aussi eu le problème que les enregistrements n'ont pas mis à jour sur 4.1. après un débogage, j'ai découvert que tous les champs de modèle extjs doivent retourner dans la réponse du serveur! Extjs n'a renvoyé aucune erreur, seul le rappel d'échec sur store.sync() et record.save() me renvoie une erreur. c'était difficile à trouver ...

Questions connexes