2015-09-03 30 views
5

Ho un combobox che assomiglia sottoCome cambiare Ext JS memorizzare i dati in modo dinamico

{ 
    xtype:'combo', 
    fieldLabel:'Test', 
    store:['a','b'] 
} 

Senza creare Ext negozio oggetto Sto assegnando la matrice per memorizzare e visualizza i valori di bene.

Ad un certo azione voglio aggiornare l'archivio con [ 'd', 'e']

Ho cercato assegnando i nuovi valori per memorizzare come qui di seguito

comboObje.store=['d','e']; 

ma non lo è aggiornare i valori.

come sostituire i valori originali con nuovi valori nel negozio.

risposta

6

È possibile creare un nuovo negozio utilizzando bindStore o semplicemente caricare i nuovi dati al negozio esistente utilizzando loadData:

combo.store.loadData(['d', 'e'].map(function(item){ return [item]; })); 

esempio di lavoro: https://fiddle.sencha.com/#fiddle/tb1

+2

grazie CD .. sta funzionando bene ... –

2

Nella versione 5. * e superiori è possibile utilizzare:

comboObje.setStore(['d','e']); 

Questo non funziona nelle versioni precedenti.

incollare il seguente codice in un Sencha Fiddle come un 'proof-of-':

Ext.application({ 
    name : 'Fiddle', 

    launch : function() { 
     var panel = Ext.create('Ext.form.Panel', { 
      title: 'test', 
      items: [{ 
       xtype:'combo', 
       fieldLabel:'Test', 
       store:['a','b'] 
      }], 
      renderTo: Ext.getBody() 
     }); 

     panel.down('combo').setStore(['d','e']); 
    } 
}); 
+0

No non funziona –

+0

È assolutamente funzionante. Nessun dubbio. Modificherò la mia risposta. – Tarabass

+0

Ok fammi fare un violino –

1

Prova questo:

comboObje.getStore().loadData([{'field1': 'd'}, {'field1': 'e'}]); 

Quando si assegna un array a 'store' config, ExtJS genera automaticamente i nomi dei campi.