2012-01-24 24 views
7

मैं एक डोजो चार्ट लोड करने के लिए jquery का उपयोग करने का प्रयास कर रहा हूं। मैं इस कोड का उपयोग कर रहा हूँ। हालांकि दूसरे क्लिक में, पहले बटन में मुझे यह त्रुटि मिलती है। वही होता है यदि मैं पहले बटन पर क्लिक करता हूं, तो दूसरे में क्लिक करें और पहले में फिर से क्लिक करें। यह समस्या मुझे पागल कर रही है।यह .domNode शून्य है

demo here

enter image description here

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.lista_').click(function() { 
     $.get('index1.php', function (data) { 
      dojo.addOnLoad(function() { 
       require(["dojo/_base/xhr", "dojo/parser", "dojo/dom"], function (xhr, parser, dom) { 
        var um = []; 
        dijit.registry.filter(function (w) { //problem here, maybe this code destroy something that should not be destroyed 
         if (dojo.indexOf(um)) { 
          w.destroyRecursive(); 
         } 
        }); 
        $('#paginas').html(data); 

        dojo.parser.parse(dojo.byId('paginas')); 

       }); 
      }); 
     }); 
    }); 
}); 
</script> 
+2

डिबगिंग में उपयोग की जाने वाली जेएस फ़ाइल का उपयोग करने की कोशिश करें और कम से कम एक नहीं। यह आसान डीबगिंग के लिए है। – Farmor

+0

बस आश्चर्य है कि आप दो जावास्क्रिप्ट ढांचे का उपयोग क्यों कर रहे हैं? – SergeS

+0

अच्छी तरह से, यह प्रश्न के लिए अप्रासंगिक है। मैं चार्ट बनाने के लिए केवल डोजो का उपयोग कर रहा हूं। – Daniel

उत्तर

3

ऐसा लगता है आपने डालने/नया एक पार्स करने से पहले पुराने चार्ट हटाने की कोशिश कर रहे हैं, लेकिन मुझे नहीं लगता कि क्या हो रहा है है। इससे डोजो विभिन्न त्रुटियों को बाधित कर सकता है।

dijit.registry.filter(function (w) { //problem here, maybe this code destroy something that should not be destroyed 
    if (dojo.indexOf(um)) { 
     w.destroyRecursive(); 
    } 
}); 

मुझे यकीन नहीं है कि आप यहां क्या कर रहे हैं। filter फ़ंक्शन विजेट की एक सरणी वापस करेगा जिसके लिए कॉलबैक सत्य लौटाता है। इसके अतिरिक्त, dojo.indexOf का उपयोग किसी सरणी में किसी तत्व को खोजने के लिए किया जाता है (मुझे यकीन नहीं है कि आप किस प्रकार का काला जादू कर रहे हैं: पी)।

मुझे लगता है कि (अगर मैं अपने इरादों समझ लिया है), तो आप बल्कि करना चाहिए:

dijit.registry.findWidgets(dojo.byId("paginas")).forEach(function(w) { 
    w.destroy(); 
}); 

यह डालने और नव प्राप्त किए गए HTML पार्स करने से पहले विजेट (रों) #paginas अंदर नष्ट कर देगा।

संपादित करें: जब आप दूसरे बटन पर क्लिक करते हैं, और चार्ट हटा दिया जाता है, तो <style> टैग भी हटा दिया जाता है। यही कारण है कि आप टूलटिप div से कलाकृतियों को देखते हैं, क्योंकि यह अब सीएसएस द्वारा छिपा हुआ नहीं है। मुख्य फ़ाइल का हेडर के बजाय एचटीएमएल आप jQuery (index1.php) के साथ लोड में

<style type="text/css"> 
@import "http://ajax.googleapis.com/ajax/libs/dojo/1.7/dijit/themes/claro/claro.css"; 
</style> 

: आप मुख्य फ़ाइल में claro.css आयात होने से इस का समाधान कर सकते हैं, जैसे कि यह डाल दिया।

+0

आपके उत्तर के लिए धन्यवाद। लिंक अब आपके सुझाव के साथ अद्यतन किया गया है। लेकिन पहली बार जब हम दूसरे बटन में क्लिक करते हैं तो एक समस्या होती है। समस्या को पुन: उत्पन्न करने के लिए आपको टूलटिप को सक्रिय करने की आवश्यकता है। कुछ divs हटा नहीं रहे हैं। – Daniel

+0

@ Daniel हम्म, मैं अद्यतन पृष्ठ पर त्रुटियों को नहीं देख रहा हूँ। आप सही हैं कि टूलटिप divs को हटाया नहीं गया है, लेकिन मुझे यकीन नहीं है कि वे एक समस्या हैं क्योंकि उनके पास एक स्पष्ट आईडी नहीं है (और टूलटिप एक सिंगलटन की तरह है)। – Frode

+0

अब कोई त्रुटि नहीं है। एकमात्र मुद्दा टूलटिप की चीजें है जिसे हटाया नहीं जाता है। और अगर मैं शरीर या कुछ से नष्ट करता हूं तो मुझे प्रारंभिक त्रुटि मिल जाएगी .domNode शून्य है – Daniel

संबंधित मुद्दे