【问题标题】:Add hyperlink with click event to Dojo grid将带有单击事件的超链接添加到 Dojo 网格
【发布时间】:2016-07-03 11:20:31
【问题描述】:

我的问题类似于Implementing a hyperlink within a dojo datagrid,并且我能够使用格式化程序成功地将超链接的标记添加到Dojo 网格。

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

我有一个如下格式器:

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

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

我看了一点 dom-construct,但我不知道如何添加一个在单击时调用 Dijit 函数的超链接。

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

【问题讨论】:

    标签: javascript dojo dgrid


    【解决方案1】:

    dojo.behavior 更现代的方法是使用on and event delegation。 dgrid 实例已经公开了自己的on 函数,以使这更容易:

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

    【讨论】:

    • 太棒了,就像一个魅力!非常感谢您的帮助!
    • 唯一奇怪的是,'event.target' 变成了锚标签的内部元素,而不是锚元素本身。
    • 这是意料之中的; event.target 将是触发事件的最里面的元素。 this 将是匹配选择器的元素。我链接到的参考指南页面对此进行了解释。
    【解决方案2】:

    我求助于使用 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();
    

    不确定是否有更优雅的方式来做到这一点? :)

    【讨论】:

    • 这似乎有点不稳定,我会继续寻找更好的解决方案...
    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 2013-08-20
    • 2011-08-02
    • 2017-08-02
    • 2018-07-22
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多