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

Posted

技术标签:

【中文标题】在 Sench Touch List itemTpl 中使用成员函数【英文标题】:Using member functions within Sench Touch List itemTpl 【发布时间】:2011-11-27 02:34:40 【问题描述】:

关于 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' is not a function (evalating 'fm.helloWorld(values['name'])')

我想我不应该创建一个新的 Ext.XTemplate 对象。是否有任何解决方案可以在不创建单独的 XTemplate 的情况下传递成员函数?

还是我应该放弃列表,自己在模板中构建列表?

【问题讨论】:

【参考方案1】:

这个用法也可以:

itemTpl :new Ext.XTemplate( '<section class="movieListItem">',
                    '<img src="UserLogo:this.showLogo"/>',
                    '<h1>NickName</h1>',
                    '<div>Content</div>',
                    '</section>',
                    
                        showLogo:function(value)

                             

                );

【讨论】:

【参考方案2】:

使用[this.helloWorld(name) 而不是[this.helloWorld(values.name)

【讨论】:

如果它在字符串中,您必须使用 values.name,如 Adam 的回答 (ST 2.2)【参考方案3】:

以下代码应该可以工作:

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

【讨论】:

以上是关于在 Sench Touch List itemTpl 中使用成员函数的主要内容,如果未能解决你的问题,请参考以下文章

在 Sench Touch 2.1 中保存和加载数据模型

sench touch 自定义小图标(转)

sencha touch 2和Phonegap之间的混淆[重复]

如果 php 文件中的 count=1 使用 sench 导航到另一个视图

如何使 dataview.list 在 Sencha Touch 2 中可见?

安装 Sencha SDK 并生成 GS 应用