如何为 widgetcolumn 动态设置不同的 tpl
How to dynamic set different tpl for widgetcolumn
朋友们!
我有一个网格,带有一个小部件列。我从服务器获取商店的数据。
我为每一行获取不同的模板,并尝试在我的小部件中设置这些模板。但是,我无法在模板中显示数据。
这是我的例子fiddlehttps://fiddle.sencha.com/#fiddle/3j41&view/editor
我希望第二列显示具有不同模板的数据。我看到的不是数据,而是 {testName}。
在第三列中,一切正常,但它是静态数据
你能帮我看看哪里出了问题吗?
我的结果:
我的店铺:
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'tplConfig'],
data: [{
name: 'Test 1',
tplConfig: {
tplBody: '<div><b>Name:</b> {testName}</div> <div>any text</div>',
tplData: {
testName: 'Alex'
}
}
} ]
});
我的网格:
{
xtype: 'grid',
title: 'Widget Column Demo',
store: store,
columns: [
.....
{
xtype: 'widgetcolumn',
text: 'Dynamic',
width: 120,
dataIndex: 'tplConfig',
widget: {
xtype: 'component',
tpl: '{tplBody}',
//data: '{tplData}' //it's not working
}
}
.......
]
}
您可以使用渲染器:
{
xtype: 'gridcolumn',
text: 'Dynamic',
width: 120,
dataIndex: 'tplConfig',
renderer: function(tplConfig) {
var t = new Ext.Template(tplConfig.tplBody);
return t.apply(tplConfig.tplData);
}
}
或作为 1 衬垫:
return new Ext.Template(tplConfig.tplBody).apply(tplConfig.tplData);
朋友们! 我有一个网格,带有一个小部件列。我从服务器获取商店的数据。 我为每一行获取不同的模板,并尝试在我的小部件中设置这些模板。但是,我无法在模板中显示数据。
这是我的例子fiddlehttps://fiddle.sencha.com/#fiddle/3j41&view/editor
我希望第二列显示具有不同模板的数据。我看到的不是数据,而是 {testName}。 在第三列中,一切正常,但它是静态数据
你能帮我看看哪里出了问题吗?
我的结果:
我的店铺:
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'tplConfig'],
data: [{
name: 'Test 1',
tplConfig: {
tplBody: '<div><b>Name:</b> {testName}</div> <div>any text</div>',
tplData: {
testName: 'Alex'
}
}
} ]
});
我的网格:
{
xtype: 'grid',
title: 'Widget Column Demo',
store: store,
columns: [
.....
{
xtype: 'widgetcolumn',
text: 'Dynamic',
width: 120,
dataIndex: 'tplConfig',
widget: {
xtype: 'component',
tpl: '{tplBody}',
//data: '{tplData}' //it's not working
}
}
.......
]
}
您可以使用渲染器:
{
xtype: 'gridcolumn',
text: 'Dynamic',
width: 120,
dataIndex: 'tplConfig',
renderer: function(tplConfig) {
var t = new Ext.Template(tplConfig.tplBody);
return t.apply(tplConfig.tplData);
}
}
或作为 1 衬垫:
return new Ext.Template(tplConfig.tplBody).apply(tplConfig.tplData);