簡體   English   中英

X上的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM