簡體   English   中英

如何在ExtJS中的數據視圖中的鏈接單擊上執行功能

[英]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://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>'
);

馬特是對的,您不能在這樣的函數中使用“ this”。 您還需要將其添加為偵聽器,就像我在這里所做的那樣: http : //jsfiddle.net/k4ggq/2/

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

這至少會將某些內容記錄到控制台。

UPDATE

如果您指定“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM