将带有单击事件的超链接添加到 Dojo 网格

Add hyperlink with click event to Dojo grid

我的问题类似于 Implementing a hyperlink within a dojo datagrid,并且我能够使用 formatter.

成功地将超链接标记添加到 Dojo 网格

但是,我需要在这些超链接上连接一个 click 事件,以在包含网格的 Dijit 中触发一个函数。

我有一个像下面这样的格式化程序:

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

虽然这有效(我确实得到了网格单元格内的标记),但 myFunctionInsideTheDijit 函数不可用(除非我在全局范围内声明它)。

我稍微看了看 dom-construct,但我就是想不通如何添加在单击时调用 Dijit 函数的超链接.

非常感谢任何帮助!谢谢!

我使用 dojo/behavior 使其工作:

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

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

            that.myFunctionInsideTheDijit();
        }
    }
});

behavior.apply();

不确定是否有更优雅的方法? :)

dojo.behavior 更现代的方法是使用 on and event delegation。 dgrid 实例已经公开了它们自己的 on 函数以使其稍微容易一些:

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