我有以下代码:
xtype: 'dataview',
//title: 'test',
preventHeader: true,
height: 100,
bodyPadding: 10,
tpl: new Ext.XTemplate(
'<tpl for=".">',
'<a href="#">{name}</a>',
'</tpl>'
),
store: new RateManagement.store.ServiceStore(),
itemclick: function(this, record, item, index, e, eOpts) {
console.log(this);
}
我正在尝试将所选链接的文本输出到控制台;但是,我收到了这个错误:
未捕获的SyntaxError:意外的令牌
这是一个jsfiddle:
当用户点击数据视图中的链接时,如何运行代码?
参考。 http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.view.View-event-itemclick
编辑:这是我的实际代码(与jsfiddle略有不同)。
xtype: 'dataview',
itemSelector: 'a.serviceLink',
tpl: tpl2,
store: new RateManagement.store.ServiceStore(),
listeners:{
"itemclick": function(dataview, record) {
console.log(dataview);
}
}
并且,tpl2
变量定义为:
var tpl2 = new Ext.XTemplate(
'<tpl for=".">',
'<a href="#">{name}</a>',
'</tpl>'
);
答案 0 :(得分:3)
马特是正确的,你不能在这样的功能中使用'this'。您还需要将其添加为侦听器,就像我在此处所做的那样:http://jsfiddle.net/k4ggq/2/
listeners:{
"itemclick": function(dataview, record) {
console.log(dataview);
}
}
这至少会记录到控制台。
如果您指定'itemSelector'配置选项,则需要确保这反映在'tpl'配置选项中。例如,如果itemSelector是'a.serviceLink',那么你的tpl必须是:
new Ext.XTemplate(
'<tpl for=".">',
'<a href="#" class="serviceLink">{name}</a>',
'</tpl>'
)
请在此处查看工作示例:http://jsfiddle.net/k4ggq/4/
答案 1 :(得分:1)
您不能在函数中使用this
作为变量名,将其更改为dataview
或其他内容:
itemclick: function(dataview, record, item, index, e, eOpts) {
console.log(this);
}
答案 2 :(得分:1)
xtype: 'dataview',
preventHeader: true,
height: 100,
bodyPadding: 10,
autoEl:{
tag: 'a',
href: '',
onClick: 'nameYouFunction'
}