2011-06-23 8 views
6

मेरे पास एक बटन है जो पुनः लोड करता है (AJAX अनुरोध भेजता है) jsTree एक बार क्लिक किया जाता है।मैं पूर्ण जेस्ट्री रीलोड ईवेंट पर कॉलबैक फ़ंक्शन कैसे बांधूं?

treeContainer.bind("loaded.jstree", function() { 
    alert("the tree is loaded"); 
}).jstree(config); 

समस्या मैं अनुभव है कि मैं चेतावनी (एक कॉलबैक फ़ंक्शन में लिपटे) नहीं है एक बार दिखाया गया है 'पुनः लोड' बटन क्लिक किया जाता है 2:

यहाँ मैं एक नमूना विन्यास कोड है , तीसरा, आदि समय। क्या मैं गलत jstree स्थिति घटना का उपयोग कर रहा हूँ?

संक्षेप में, मैं प्रत्येक बार 'रीलोड' बटन पर क्लिक करने के लिए एक जेएसटी कॉलबैक फ़ंक्शन निष्पादित करना चाहता हूं।

मैं वर्तमान में jsTree 1.0-rc1 (rev। 191) का उपयोग कर रहा हूं।

उत्तर

-1
jstree documentation से

:

.loaded()

एक डमी समारोह, जिसका उद्देश्य है केवल भरी हुई घटना को गति प्रदान करने। यह ईवेंट पेड़ के रूट नोड्स लोड होने के बाद एक बार ट्रिगर किया जाता है, लेकिन प्रारंभिक_ओपेन में सेट किए गए किसी भी नोड्स से पहले खोला जाता है।

तो आप इस विधि को अपने AJAX कॉल की सफलता कॉलबैक से कॉल कर सकते हैं। कुछ इस तरह:

$.ajax({ 
    url: "yourscript-url", 
    success: function(){ 
    $('selector-for-jstree-container').jstree('loaded'); 
    } 
}); 

भी देखें एक ही jstree प्रलेखन पृष्ठ पर अनुभाग "पेड़ के साथ बातचीत"।

+0

यह वही नहीं है जो मुझे चाहिए ... मैं अपने जेएस से संबंधित कॉन्फ़िगरेशन को एक ही स्थान पर रखना चाहता हूं। जो चीज़ मैं खोज रहा हूं वह इस तरह की घटना है: 'treeContainer.bind ("reloaded.jstree", function() {...})। jstree (...) ' –

+0

@ जॉन डो मुझे खेद है लेकिन मुझे नहीं लगता कि इस तरह की घटना jstree में है। आपको या तो इसके आसपास अपना रास्ता बनाना होगा (जैसा कि मैंने सुझाव दिया है) या जेएसटी कोर का विस्तार करें और इस नए कार्यक्रम को लागू करें। –

1

कोर से जोड़ें:

 reopen : function() { 
      var _this = this; 
      if(this.data.core.to_open.length) { 
       $.each(this.data.core.to_open, function (i, val) { 
        _this.open_node(val, false, true); 
       }); 
      } 
      this.__callback({}); 
      this.reopened(); 
     }, 

ध्यान दें कि केवल this.reopened allready मौजूदा फिर से खोलना-विधि में जोड़ा जाता है। ,

 reopened : function() { 
      this.__callback(); 
     }, 

अब अपनी पेड़ चयनकर्ता के लिए नए फिर से खोल-विधि

}).bind("reopened.jstree", function (e,data) { 
     alert("i am refreshed..."); 
    }); 

सावधान हो बाँध क्योंकि इस सूचना-संदेश भी जब पेड़ से किया जाता है बुलाया जाएगा: अब फिर से खोल-विधि बनाने लोड हो रहा है। यह किसी भी तरह से बेहतर है, क्योंकि अब पेड़ को ताज़ा होने पर कॉलबैक करने का कोई तरीका है!

आशा है कि यह आपको सभी की मदद करेगा!

5

नए काम के निर्माण से पहले पेड़ को नष्ट करना।

treeContainer.jstree("destroy"); 
treeContainer.bind("loaded.jstree", function() { 
    alert("the tree is loaded"); 
}).jstree(config); 
+0

धन्यवाद। इसकी सादगी और तथ्य यह है कि यह काम करने के लिए एकमात्र तरीका था जो मुझे बहुत खुश करता है। – user1167442

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