2012-04-16 28 views
11

पर डोजो संवाद बंद घटना एक सिस्टम में उपयोगकर्ता बनाने के लिए एक साधारण संवाद बनाने के लिए डोजो का उपयोग कर।एक्स (टॉप-राइट)

Tried to register widget with `id==user_submit` but that `id` is already registered 

user_submit, एक डोजो बटन मैं संवाद के अंदर प्रपत्र खत्म करने के लिए है: समस्या मैं त्रुटि मिलती है। जब मैंने इसे क्लिक करके और फ़ॉर्म सबमिट करके संवाद को बंद वहाँ मैं कोड की इस पंक्ति है संवाद फिर से (बटन पर क्लिक करें घटना खोलने में में कोई समस्या नहीं है:

dijit.byId("user_submit").destroy(); 

लेकिन अगर मैं के माध्यम से संवाद बंद शीर्ष-दाएं कोने में [x] -link/बटन मैं बटन को नष्ट नहीं करता हूं और फिर पृष्ठ को फिर से लोड किए बिना फिर से संवाद नहीं खोल सकता।

मैं बटन को नष्ट करने के लिए दोजो कैसे प्राप्त करूं या कैसे [X] -link/बटन पर क्लिक-ईवेंट को अधिभारित करने के लिए, इसलिए मैं बटन के लिए विनाश कमांड लिख सकता हूं?

उत्तर

7

एक समाधान मिला। dojo.connect() का उपयोग करके। के बाद मैं quistion तैनात

myDialog.connect(myDialog, "hide", function(e){ 
    dijit.byId("user_submit").destroy(); 
}); 

इस शीघ्र ही postet होता, लेकिन मैं पर्याप्त अंक नहीं था, इसलिए यहाँ जवाब फिर से, बस थोड़ी देर :-) है

+0

धन्यवाद! पूरी तरह से काम किया! उन लोगों के लिए जिनके पास संवाद में चीजें हैं, 'dijit.byId ("user_submit") जोड़ने के लिए मत भूलना। नष्ट करें डिस्काउंटेंट्स(); '!!!! – Superdrac

+1

अनुशंसित नष्ट विधि 'नष्ट करने योग्य' – JamieJag

3

आईआईआरसी, onClose एक्सटेंशन ईवेंट जब आप एक्स चीज पर क्लिक करते हैं तो कॉल किया जाता है, ताकि आप वहां अपना क्लीनअप कोड डालने का प्रयास कर सकें।


आप इस मुद्दे को पूरी तरह से दूर करने पर भी विचार कर सकते हैं। शायद आपको विजेट को नष्ट करने की आवश्यकता नहीं है और इसके बजाय उसी का पुन: उपयोग कर सकता है? आप इसे फिर से बनाने से पहले विजेट अस्तित्व परीक्षण भी कर सकते हैं, पुराने संस्करण को नष्ट कर सकते हैं यदि यह अभी भी जीवित है।

+0

मैं "छिपाएँ" घटना से जुड़ा है और जो काम (शीघ्र ही बाद में, लेकिन एक जवाब पोस्ट करने के लिए पर्याप्त अंक नहीं है कि तेजी से अपने खुद के प्रश्न के लिए)। लेकिन वास्तव में, जब स्क्रिप्ट को अनुकूलित करते हैं तो मैं आप सब कुछ करता हूं। लेकिन चूंकि डोजो के लिए नया और "प्रोजेक्ट" को तेजी से किया जाना था, मेरे पास संसाधन प्रबंधन में सोचने का समय नहीं था। –

+0

डायलॉग का उपयोग करने के लिए +1 – jumpnett

-1

जब पर एक्स दबाने "ऑन कैंसल" ईवेंट संवाद के शीर्ष पर ट्रिगर किया गया है।

वहां तत्व का निपटान करें।

+1

"डेवलपर को इस विधि से ओवरराइड या कनेक्ट नहीं करना चाहिए; यह टूलटिपडियलोग और उस चीज़ को खोलने वाली चीज़ के बीच एक निजी संचार डिवाइस है (उदा: डीजिट/फॉर्म/ड्रॉपडाउन बटन)" - डोजो एपीआई दस्तावेज https: // dojotoolkit।संगठन/एपीआई>> डिजिट> _DialogMixin> onCancel – GavinR

15

"Developer shouldn't override or connect to this method" "ऑनकैंकेल" के लिए documentation देखें। एक बेहतर समाधान है:

var myDialog = new Dialog({ 
    id: "myDialogId1", 
    onHide: function() { 
     myDialog.destroy() 
    } 
}); 
+1

क्या आपके पास उस दस्तावेज़ से लिंक है जो आप प्रश्न पूछने वाले व्यक्ति के साथ साझा कर सकते हैं? –

+0

http://dojotoolkit.org/api/ दिजिट/संवाद के लिए खोजें और कन्स्ट्रक्टर विधि को देखें, हम पैरा और srcNode – Superdrac

+1

पास करते हैं यह काम नहीं करता है। दिजिट/Dialog.js में भी छुपा() फ़ंक्शन नहीं है। – peterh

1

आप onCancel() पद्धति के रूप में ऊपर कहा गया है या आप dijit.dialog.closeButtonNode domElement को घटना संलग्न कर सकते हैं ओवरराइड कर सकते हैं। dijit.dialog.closeButtonNode बंद बटन के लिए data-dojo-attach-point विशेषता का नाम है।

समाप्ति:

dojo.on(dijit.Dialog.closeButtonNode, "click", function(evt){ 
     //add your logic here 
});