2013-09-26 25 views
6

C'è un modo sensato in un modello per concatenare due campi, qualcosa di simile:ExtJS Modello - campi Concatena

Ext.define('model.Person', { 
    extend: 'Ext.data.Model', 
    idProperty: 'Id', 
    fields: [ 
     { name: 'Id', type: 'int' }, 
     { name: 'FirstName', type: 'string' }, 
     { name: 'LastName', type: 'string' }, 
     { name: 'FullName', type: 'string', mapping: 'FirstName + " " + LastName' } 
    ] 
}); 

Ho provato una moltitudine di modi, ma non riesco a ottenere un altro per lavoro.

Stavo per utilizzare una funzione nel modello per attaccare i due campi insieme, ma devo anche usarlo come campo di visualizzazione all'interno di un "itemselector" (controllo personalizzato) e cambiarlo dinamicamente e tale controllo non sembra come 'FullName()' come un campo di visualizzazione.

Ogni pensiero è molto apprezzato.

risposta

10

Utilizzare la convert config del Ext.data.Field: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.Field-cfg-convert

{ name: 'FirstName', type: 'string' }, 
{ name: 'LastName', type: 'string' }, 
{ 
    name: 'FullName', 
    type: 'string', 
    convert: function(v, record) { 
     return record.get('FirstName') + ' ' + record.get('LastName') 
    } 
} 

Ecco un esempio: https://fiddle.sencha.com/#fiddle/mf

+0

perfette, grazie per questo esattamente quello che stavo cercando. Sfortunatamente noto che si aggiunge la nuova proprietà quando si effettua una richiesta al negozio, quindi il valore composto scende dal filo che è quello che stavo cercando di evitare, in entrambi i casi, ottima risposta. – dougajmcdonald

+0

Per impedire che il campo venga inviato come parte della richiesta, è sufficiente aggiungere persist: false alla definizione del campo. Correzione – existdissolve

+0

: i campi convertiti non stavano scendendo dal cavo Non avevo aggiornato il mio codice lato server! – dougajmcdonald

Problemi correlati