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

发布于 2024-12-06 21:39:01 字数 1279 浏览 1 评论 0原文

关于 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 (evaluating 'fm.helloWorld(values['name'])')

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

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

The documentation about List mention that itemTpl follows the XTemplate syntax.

I would like to use member functions in my itemTpl

If I initialize itemTpl with an XTemplate and that the member function has no argument it works:

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

But as soon as I try to pass an argument (like in the two examples below) it does not work anymore:

            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 (evaluating 'fm.helloWorld(values['name'])')

I guess I should not create a new Ext.XTemplate object. Is there any solution to pass the member functions without creating a separate XTemplate?

Or should I give up on the List and build the list myself in the template?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

苏佲洛 2024-12-13 21:39:01

以下代码应该可以工作:

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

The following code should work:

items: {
    xtype: 'list',
    store: myStore,
    itemTpl: new Ext.XTemplate(
         '<i>{name} {[this.helloWorld(values.name)]}</i>', 
         {
             compiled: true,
             helloWorld: function (name) {
                 return 'Hello ' + name;
             }
         })
}

your first example would work, with values.name instead of just name

燕归巢 2024-12-13 21:39:01

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

Use {[this.helloWorld(name)}
instead of {[this.helloWorld(values.name)}

沉溺在你眼里的海 2024-12-13 21:39:01

这个用法也可以:

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

                            } 

                });

This usage is also ok:

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

                            } 

                });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文