2014-02-13 27 views
0
执行功能

我有以下代码:如何在链接点击的数据视图中的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); 
} 

我试图输出选择链接的文本到控制台上;不过,我得到这个错误:

Uncaught SyntaxError: Unexpected token this

这里是一个的jsfiddle:

http://jsfiddle.net/k4ggq/1/

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

Ref。 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

马特是正确的,你不能在这样的功能中使用'this'。您还需要将其添加为一个监听器,因为我已经做了这里:http://jsfiddle.net/k4ggq/2/

listeners:{ 
    "itemclick": function(dataview, record) { 
    console.log(dataview); 
    } 
} 

这至少记录的东西到控制台。

UPDATE

如果指定了“itemSelector”配置选项,您需要确保这反映在您的“第三方物流”配置选项。例如,如果itemSelector是“a.serviceLink”,你的第三方物流必须是这样的:

new Ext.XTemplate(
    '<tpl for=".">', 
    '<a href="#" class="serviceLink">{name}</a>', 
    '</tpl>' 
) 

请看这里工作的例子:http://jsfiddle.net/k4ggq/4/

+0

我看到它在小提琴中奏效,但我的代码与该示例略有不同。我正在使用'itemSelector'。出于某种原因,我没有得到任何记录到控制台,我没有得到任何错误。我用我的实际代码更新了这个问题。 – user1477388

+1

那么itemSelector组件似乎没有“itemclick”事件,所以这可能是为什么它不起作用!请参阅此处的文档:http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.ux.form.ItemSelector我没有使用此组件的经验,所以我不确定解决方案是。你有JSFiddle吗? – user1578653

+0

是的,这里是小提琴http://jsfiddle.net/k4ggq/3/。控制台中没有错误。我尝试过使用你的小提琴代码,但ExtJS抱怨并说:“你必须指定itemSelector和'tpl'。 – user1477388

1

不能使用this作为您的功能变量名称,将其更改为dataview什么:

itemclick: function(dataview, record, item, index, e, eOpts) { 
    console.log(this); 
} 
+0

有没有错误,但没有被记录到控制台。 – user1477388

+0

正如在其他答案中提到的那样,您需要将其添加到“侦听器”配置中。 – matt

1
xtype: 'dataview', 
preventHeader: true, 
height: 100, 
bodyPadding: 10, 
autoEl:{ 
    tag: 'a', 
    href: '', 
    onClick: 'nameYouFunction' 
} 
相关问题