====== Ext.data.DirectStore e Ext.Record ====== Secondo la documentazione di ExtJS per creare un Ext.data.DirectStore è necessario passare la configurazione //fields// che verrà poi internamente utilizzata per istanziare il Ext.data.JsonRecord associato allo store. Il parametro fields contiene, come suggerisce il nome, la definizione dei Ext.data.Field che verranno costruiti a partire dal Json ricevuto dal server. Il formato degli oggetti è esattamente lo stesso che viene utilizzato come parametro del metodo statico Ext.data.Record.create per ottenere un costruttore custom per le nostre entità. var movieStore = new Ext.data.DirectStore({ [...], fields: [ { name: 'title', type:'string' }, { name: 'year', type:'int' }, { name: 'director', type:'string' }, { name: 'summary', type:'string' }, { name: 'rate', type:'int' } ] }); Spesso capita però che la nostra entità venga già definita a livello globale nell'applicazione (magari incapsulata dento un package). Per non ripetere l'elenco dei campi due volte (in un ottica DRY) è possibile comunicare allo store la definizione dei campi in maniera dinamica partendo dal costruttore dell'entità in questione. var Movie = Ext.data.Record.create([ { name: 'title', type:'string' }, { name: 'year', type:'int' }, { name: 'director', type:'string' }, { name: 'summary', type:'string' }, { name: 'rate', type:'int' } ]); var movieStore = new Ext.data.DirectStore({ [...], fields: Movie.prototype.fields.items }); Molto meglio no?