Кнопки 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();
}));