我的客户端模型定义为:
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方法?
由于
答案 0 :(得分:1)
您可以使用以下代码转换
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列。
答案 1 :(得分:1)
我想出的解决方案是使用模板函数来获取对客户端数据的引用,并通过那里调用GetFullName。
我希望能够将其转换为可重用的类,但我不确定如何获得对网格的引用(因为它不会总是在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);
}
}
)
}