1

[更新]

根据此处的建议改进代码。

--

我已经使用 dijit 和 dgrid 构建了一个网格:

define([
...
], function (declare, _WidgetBase, _TemplatedMixin, ...) {

    return declare("MyGrid.widget.MyGrid", [ _WidgetBase, _TemplatedMixin ], {

        deleteButton: new MendixButton({
            className: "btn mx-button claro haasgridbutton",
            iconClass: "dijitIconDelete"
        }),

        ...

        postCreate: function () {
        ...
            addButtons();
        },
        ...
        addButtons: function () {
            ...
            dojoConstruct.place(this.deleteButton.domNode, this.objectButtonsNode);
            this.deleteButton.on("Click", dojo.hitch(this, function () {
                this._deleteObjectDialog();
            }));
        },
    });
});

require(["MyGrid/widget/MyGrid"]);

无论出于何种原因,如果我离开页面并返回,删除按钮(或任何其他按钮)都不起作用。该函数deleteObjectDialog();根本没有被调用,我不知道为什么,我也不知道如何调试它。调试器从函数开始,我无法使用 Inspector 找到“onClick”部分。

4

1 回答 1

1

您在这里使用的语法是错误的。事件未使用set. 它们使用on. 而且您的参考this也不正确。在onClick调用内部,this将引用deleteButton而不是网格小部件。代替:

this.deleteButton.set("onClick", function () {
                l_this._deleteObjectDialog();
            });

它应该是:

this.deleteButton.on("Click", dojo.hitch(this, function () {
                this._deleteObjectDialog();
            }));
于 2017-03-28T10:11:36.677 回答