2013-09-26 8 views
6

二つのフィールドを連結するためのモデルで賢明な方法があり、このような何か:私は多くの方法を試してみたが、これにいずれかを取得するように見えることはできませんExtJSのモデル - を連結フィールド

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

作業。

私は2つのフィールドを貼り合わせるためにモデルの関数を使用しようとしていましたが、これも 'itemselector'(カスタムコントロール)内の表示フィールドとして使用し、これを動的に切り替える必要があります。ディスプレイフィールドとして 'FullName()'が好きなようです。

どのような考えにも大変感謝しています。

答えて

10

はExt.data.Fieldのconvert設定を使用します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') 
    } 
} 

をここでは実際の例です:https://fiddle.sencha.com/#fiddle/mf

+0

パーフェクト、私が探していたまさにそのためのおかげで。残念なことに、私はそれが店にリクエストをするときに新しいプロパティを追加することに気付くので、複合値は、私が避けようとしていたワイヤー、どちらの方法でも、素晴らしい答えになります。 – dougajmcdonald

+0

フィールドが要求の一部として送信されないようにするには、単にフィールド定義にpersist:falseを追加します。 – existdissolve

+0

訂正:変換されたフィールドは私のサーバー側のコードを更新していないワイヤーを下っていませんでした! – dougajmcdonald

関連する問題