2013-09-26 14 views
6

jest jakiś sensowny sposób w modelu aby złączyć dwa pola, coś takiego:ExtJS Model - oddzielając pola

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

Próbowałem wiele sposobów, ale nie wydaje się, aby uzyskać dowolny praca.

Zamierzałem użyć funkcji w modelu, aby przykleić te dwa pola do siebie, ale muszę również użyć tego jako pola wyświetlania wewnątrz "itemselector" (kontrola niestandardowa) i przełączam to dynamicznie, a ta kontrola nie wydaje się, że "FullName()" jako pole wyświetlania.

Wszelkie przemyślenia są bardzo cenne.

Odpowiedz

10

Użyj convert config z 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') 
    } 
} 

Oto żywo Przykład: https://fiddle.sencha.com/#fiddle/mf

+0

doskonały, dzięki za to dokładnie to, czego szukałem. Niestety zauważam, że dołącza nową właściwość podczas składania zapytania do sklepu, więc wartość złożona sprowadza się do drutu, co starałem się uniknąć, tak czy inaczej, wspaniała odpowiedź. – dougajmcdonald

+0

Aby zapobiec przedłożeniu tego pola jako części żądania, po prostu dodaj persist: false do definicji pola. – existdissolve

+0

Korekta: zmienione pola nie schodziły z przewodów Nie zaktualizowałem kodu po stronie serwera! – dougajmcdonald

Powiązane problemy