0

次のように定義されたクライアントモデルがあります。

Ext.define('app.model.Client', {
    extend: 'Ext.data.Model',
    alias: 'model.clientmodel',
    fields: [
        {
            name: 'Firstname',
            type: 'string'
        },
        {
            name: 'Lastname',
            type: 'string'
        },
        {
            name: 'Title',
            type: 'string'
        }
    ],
    GetFullName: function(withTitle) {
        var fullName = [this.get('Firstname'), this.get('Lastname')].join(' ');

        if(withTitle){
            return [this.get('Title'), fullName].join(' '); 
        }

        return fullName;
    }
});

グリッドに「フルネーム」テンプレート列が必要です。モデルで定義されているGetFullNameメソッドを呼び出す方法はありますか?

ありがとう

4

2 に答える 2

1

The solution I came up with was to use the template function to get a reference to the client data and call GetFullName on it through there.

I'd like to be able to turn this into a reusable class, but I'm not sure on how to then get a reference to the grid (since it won't always be on MyGrid).

{
    xtype: 'templatecolumn',
    dataIndex: 'Lastname',
    text: 'Name',
    tpl: new Ext.XTemplate('{[this.getFullName(values.ID)]}',
    {
        getFullName: function (clientId) {
            var myGrid = Ext.getCmp('MyGrid'),
            myStore = myGrid.getStore(),
            client = myStore.getById(clientId);

            return client.GetFullName(true);
        }
    }
    )
}
于 2013-02-25T06:23:28.157 に答える
1

以下のコードのように convert を使用できます

Ext.define('app.model.Client', {
extend: 'Ext.data.Model',
alias: 'model.clientmodel',
fields: [
    {
        name: 'Firstname',
        type: 'string'
    },
    {
        name: 'Lastname',
        type: 'string'
    },
    {
        name: 'Title',
        type: 'string'
    },
    {
        name: 'FullName',
        type: 'string',
        convert: function(value,record) {
            var fullName = [record.get('Firstname'), record.get('Lastname')].join(' ');

            if(withTitle){
                return [record.get('Title'), fullName].join(' '); 
            }

           return fullName;
        }
    }

]

});

グリッド dataIndex で FullName 列を使用できるようになりました。

于 2013-02-25T05:38:55.243 に答える