关于List的文档提到itemTpl遵循XTemplate语法。
我想在itemTpl中使用成员函数
如果我使用XTemplate初始化itemTpl并且成员函数没有参数,那么它可以工作:
items: {
xtype: 'list',
store: myStore,
itemTpl: new Ext.XTemplate('<i>{name} {[this.hello()]}</i>', {
hello: function () {
return 'Hello';
}
})
但是一旦我尝试传递一个参数(如下面的两个例子),它就不再起作用了:
items: {
xtype: 'list',
store: myStore,
itemTpl: new Ext.XTemplate('<i>{name} {[this.helloWorld(name)}</i>', {
helloWorld: function (name) {
return 'Hello ' + name;
}
})
items: {
xtype: 'list',
store: myStore,
itemTpl: new Ext.XTemplate('<i>{name} {name:helloWorld}</i>', {
helloWorld: function (string) {
return 'Hello ' + name;
}
})
TypeError:'undefined'不是函数(评估'fm.helloWorld(values ['name'])')
我想我不应该创建一个新的Ext.XTemplate对象。是否有任何解决方案来传递成员函数而不创建单独的XTemplate?
或者我应该放弃列表并在模板中自己构建列表?
答案 0 :(得分:6)
以下代码应该有效:
items: {
xtype: 'list',
store: myStore,
itemTpl: new Ext.XTemplate(
'<i>{name} {[this.helloWorld(values.name)]}</i>',
{
compiled: true,
helloWorld: function (name) {
return 'Hello ' + name;
}
})
}
您的第一个示例可以使用values.name
,而不只是name
答案 1 :(得分:0)
使用{[this.helloWorld(name)}
而不是{[this.helloWorld(values.name)}
答案 2 :(得分:0)
此用法也可以:
itemTpl :new Ext.XTemplate( '<section class="movieListItem">',
'<img src="{UserLogo:this.showLogo}"/>',
'<h1>{NickName}</h1>',
'<div>{Content}</div>',
'</section>',
{
showLogo:function(value){
}
});