Кнопки Dijit не работают, когда я перехожу на другую страницу

[ОБНОВИТЬ]

Улучшен код согласно совету здесь.

-

Я построил сетку, используя 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(); просто не вызывается, и я не знаю почему, и я не знаю, как отладить это. Отладчик начинается с функции, и я не могу найти часть "onClick" с помощью Инспектора.

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();
            }));
Другие вопросы по тегам