Dojo диалоговое закрытие события на X (вверху справа)
Im использует Dojo, чтобы создать простой диалог для создания пользователя в системе. Проблема в том, что я получаю сообщение об ошибке:
Tried to register widget with `id==user_submit` but that `id` is already registered
user_submit
, является кнопкой Dojo. Я должен закончить форму внутри диалогового окна. Когда я закрываю диалоговое окно, нажимая на него и отправляя форму, нет проблем при открытии диалога еще раз (в событии клика на кнопке у меня есть эта строка кода:
dijit.byId("user_submit").destroy();
но если я закрою диалог с помощью кнопки [x] -link/в правом верхнем углу, я не уничтожу кнопку, а затем не могу открыть диалог снова, не перезагружая страницу.
Как мне получить Dojo, чтобы уничтожить кнопку или как перегрузить событие click на событии [X] -link/, поэтому я могу написать команду destroy для кнопки?
Ответы
Ответ 1
Найден решение. используя dojo.connect().
myDialog.connect(myDialog, "hide", function(e){
dijit.byId("user_submit").destroy();
});
Если бы я разместил quistion, я бы опубликовал это сообщение вскоре, но у меня не было достаточно очков, так что вот ответ снова, только немного поздно: -)
Ответ 2
"Developer shouldn't override or connect to this method"
для "onCancel" см. документацию.
Лучшее решение:
var myDialog = new Dialog({
id: "myDialogId1",
onHide: function() {
myDialog.destroy()
}
});
Ответ 3
IIRC, событие расширения onClose
вызывается, когда вы нажимаете на предмет X, поэтому вы можете попробовать разместить там код очистки.
Вы также можете рассмотреть возможность обойти эту проблему полностью. Возможно, вам не нужно уничтожать виджет и вместо этого использовать одно и то же? Вы также можете выполнить тест существования виджета, прежде чем создавать его снова, уничтожив старую версию, если она еще жива.
Ответ 4
Вы можете переопределить метод onCancel()
, как указано выше, или вы можете присоединить событие к
dijit.dialog.closeButtonNode
domElement.
dijit.dialog.closeButtonNode
- это имя атрибута data-dojo-attach-point
для кнопки закрытия.
Exp:
dojo.on(dijit.Dialog.closeButtonNode, "click", function(evt){
//add your logic here
});
Ответ 5
При нажатии X в верхней части диалогового окна запускается событие onCancel.
Утилизируйте элемент там.