2014-02-13 56 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' 
} 
相關問題