[英]Removing the close button (the X in the top-right corner) - in dialog box created using dojo?
[英]Dojo dialog close event on X (top-right)
我使用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破壞按鈕或如何重載[X] -link / button上的click事件,這樣我可以為按鈕編寫destroy命令?
"Developer shouldn't override or connect to this method"
for“onCancel”請參閱文檔 。 更好的解決方案是:
var myDialog = new Dialog({
id: "myDialogId1",
onHide: function() {
myDialog.destroy()
}
});
找到了解決方案。 通過使用dojo.connect()。
myDialog.connect(myDialog, "hide", function(e){
dijit.byId("user_submit").destroy();
});
在我發布quistion之后不久會發布這個,但我沒有足夠的積分,所以這里是答案,只是有點晚了:-)
IIRC,單擊X事件時會調用onClose
擴展事件,因此您可以嘗試將清理代碼放在那里。
您也可以考慮完全回避這個問題。 也許您不需要銷毀小部件,而是可以重用相同的小部件? 您還可以在再次創建之前執行小部件存在測試,如果它仍然存在則銷毀舊版本。
您可以如上所述覆蓋onCancel()
方法,也可以將事件附加到dijit.dialog.closeButtonNode
domElement。 dijit.dialog.closeButtonNode
是關閉按鈕的data-dojo-attach-point
屬性的名稱。
經驗:
dojo.on(dijit.Dialog.closeButtonNode, "click", function(evt){
//add your logic here
});
按下對話框頂部的X時,會觸發“onCancel”事件。
在那里處理元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.