如何在ExtJS中的数据视图中执行链接点击功能

时间:2014-02-13 15:32:51

标签: javascript extjs

我有以下代码:

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://jsfiddle.net/k4ggq/1/

当用户点击数据视图中的链接时,如何运行代码?

参考。 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>'
);

3 个答案:

答案 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'
}