2016-03-17 93 views
1

我的問題與Implementing a hyperlink within a dojo datagrid類似,並且我可以使用格式化程序成功地將超鏈接的標記添加到Dojo網格。添加超鏈接並點擊事件到Dojo網格

但是,我需要在這些超鏈接上連接點擊事件以觸發包含網格的Dijit中的函數。

我有類似下面的格式:

var createEditLinks = function (data) { 
    return '<a class="my-css-class" href="#" onclick="myFunctionInsideTheDijit()">' + data.title + '</a>' 
} 

雖然這工作(我得到的網格單元內的標記),該myFunctionInsideTheDijit功能不可用(除非我將宣佈其對全球範圍)。

我看了一下dom-construct,但我只是不知道如何添加一個超鏈接,單擊時調用Dijit函數。

任何幫助,非常感謝!謝謝!

回答

2

dojo.behavior相比,更現代的方法是使用on and event delegation。 dgrid情況下已經暴露自己on功能,使這稍微容易:

grid.on('a.my-css-class:click', function (event) { 
    ... 
}); 
+0

好極了,就像一個魅力!非常感謝你的幫助! –

+0

唯一奇怪的是'event.target'成爲錨標籤的內部元素,而不是錨元素本身。 –

+0

這是預期的; 'event.target'將是觸發事件的最內層元素。 'this'將是與選擇器匹配的元素。這在我鏈接到的參考指南頁面中進行了解釋。 –

0

我使出使用道場/行爲,使其工作:

// Code inside Dijit's startup function 
var that = this; 

behavior.add({ 
    "a.my-css-class": { 
     onclick: function (e) { 
      e.preventDefault(); 

      that.myFunctionInsideTheDijit(); 
     } 
    } 
}); 

behavior.apply(); 

不知道是否有這樣做的更優雅的方式? :)

+0

這似乎是一個有點不穩定,雖然,我會繼續尋找更好的解決方案... –