使用Sench Touch List itemTpl中的成员函数

Chr*_*mer 3 javascript extjs javascript-framework sencha-touch

有关List的文档提到itemTpl遵循XTemplate语法.

我想在itemTpl中使用成员函数

如果我使用XTemplate初始化itemTpl并且成员函数没有参数它可以工作:

            items: {
            xtype: 'list',
            store: myStore,
            itemTpl: new Ext.XTemplate('<i>{name} {[this.hello()]}</i>', {
                hello: function () {
                    return 'Hello';
                }
            })
Run Code Online (Sandbox Code Playgroud)

但是一旦我尝试传递一个参数(如下面的两个例子中),它就不再起作用了:

            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;
                }
            })
Run Code Online (Sandbox Code Playgroud)

TypeError:'undefined'不是函数(评估'fm.helloWorld(values ['name'])')

我想我不应该创建一个新的Ext.XTemplate对象.是否有任何解决方案来传递成员函数而不创建单独的XTemplate?

或者我应该放弃列表并在模板中自己构建列表?

小智 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;
             }
         })
}
Run Code Online (Sandbox Code Playgroud)

你的第一个例子可以工作,values.name而不仅仅是name