sencha/javascript-如何从tpl模板内部调用函数

sencha/javascript-如何从tpl模板内部调用函数,javascript,templates,extjs,sencha-touch,Javascript,Templates,Extjs,Sencha Touch,我正在使用Sencha touch,并试图修改我在网上找到的一个twitter示例,以便将twitter提要中的URL转换为可点击的链接。我看到sencha touch库中的一个示例使用了linkify功能,但我不知道如何将其合并到我自己的项目中。这是我的密码: t_news = new Ext.Component({ cls:'t_news', title:'News', scroll: 'vertical', tpl: [

我正在使用Sencha touch,并试图修改我在网上找到的一个twitter示例,以便将twitter提要中的URL转换为可点击的链接。我看到sencha touch库中的一个示例使用了linkify功能,但我不知道如何将其合并到我自己的项目中。这是我的密码:

t_news = new Ext.Component({
        cls:'t_news',
        title:'News',
        scroll: 'vertical',
        tpl: [
            '<tpl for=".">',
                '<div class="tweet">',
                        '<div class="avatar"><img src="{profile_image_url}" /></div>',
                        '<div class="tweet-content">',
                            '<h2>{from_user}</h2>',
                            '<p>{text:this.linkify}</p>',
                        '</div>',
                '</div>',
            '</tpl>',
        ]
    });

function linkify(value){
        return value.replace(/(http:\/\/[^\s]*)/g, "<a target=\"_blank\" href=\"$1\">$1</a>");
    }

如果显式声明XTemplate,则可以使用最后一个构造函数参数,该参数接受一个配置对象,您可以在其中指定模板函数。可以使用值:function syntax调用这些函数

您的代码将成为:

t_news = new Ext.Component({
cls:'t_news',
title:'News',
scroll: 'vertical',
tpl: new Ext.XTemplate(
    '<tpl for=".">',
        '<div class="tweet">',
                '<div class="avatar"><img src="{profile_image_url}" /></div>',
                '<div class="tweet-content">',
                    '<h2>{from_user}</h2>',
                    '<p>{text:this.linkify}</p>',
                '</div>',
        '</div>',
    '</tpl>',
    {
        linkify: function(value){
            return value.replace(/(http:\/\/[^\s]*)/g, "$1");
        }
    })
t\u news=新的外部组件({
cls:‘t_新闻’,
标题:"新闻",,
滚动:‘垂直’,
tpl:新Ext.XTemplate(
'',
'',
'',
'',
“{from_user}”,
“{text:this.linkify}

”, '', '', '', { linkify:函数(值){ 返回值。replace(/(http:\/\/[^\s]*)/g,“$1”); } })
}))

这些函数在XTemplate的范围内执行,也可以在tpl标记或方括号表示法中调用:

'<tpl if="this.linkify(values.text) == \'some text\'">',
'</tpl>'

'<p>{[this.linkify(values.text)]}</p>'
”,
''
“{[this.linkify(values.text)]}

希望这有帮助

干杯
斯图尔特(Stuart)

方括号符号很有魅力,所以一定要使用它。
'<tpl if="this.linkify(values.text) == \'some text\'">',
'</tpl>'

'<p>{[this.linkify(values.text)]}</p>'