我正在使用Sencha touch,我正在尝试修改我在网上找到的Twitter示例,以便将网址从Twitter提要转换为可点击链接.我看到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>");
}
这是错误:
Uncaught TypeError: Object [object Object] has no method 'linkify'
解决方法:
如果明确声明XTemplate,则可以使用最后一个构造函数参数,该参数接受可以指定模板函数的配置对象.可以使用value:function语法调用这些函数.
您的代码将变为:
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");
}
})
});
这些函数在XTemplate的范围内执行,也可以在tpl标记或方括号表示法中调用:
'<tpl if="this.linkify(values.text) == \'some text\'">',
'</tpl>'
'<p>{[this.linkify(values.text)]}</p>'
希望这可以帮助!
干杯
斯图尔特
原文地址:https://codeday.me/bug/20190715/1462651.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。