[英]How to execute function on link click in dataview in 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:意外令牌此
這是一個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>'
);
馬特是對的,您不能在這樣的函數中使用“ 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/
您不能在函數中使用this
作為變量名,也不能將其更改為dataview
或其他內容:
itemclick: function(dataview, record, item, index, e, eOpts) {
console.log(this);
}
xtype: 'dataview',
preventHeader: true,
height: 100,
bodyPadding: 10,
autoEl:{
tag: 'a',
href: '',
onClick: 'nameYouFunction'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.