2014-06-28 7 views
6

को रोकें मैं फ़ाइल सिस्टम में फ़ोल्डर सूचीबद्ध करने के लिए जेएसटी प्लगइन का उपयोग कर रहा हूं। किसी निश्चित स्थिति को पूरा करने से पहले मुझे किसी उपयोगकर्ता को किसी अन्य नोड में बदलने से रोकने की आवश्यकता होती है।
नीचे दिया गया कोड प्रचार को रोकता नहीं है ... मैंने अन्य प्लगइन के साथ कुछ समाधान देखा लेकिन यह एक आसान काम है जो अन्य प्लगइन के बिना संभव होना चाहिए।जेएस ट्री नोड

$('#jstree').on('select_node.jstree', function (e) 
{ 
    if (!changeAllowed() 
    { 
     e.preventDefault(); 
     e.stopImmediatePropagation(); 
    } 
}); 

उत्तर

12

अपने आप को और भावी पीढ़ी के लिए दस्तावेजीकरण: आप jstree जे एस (: https://github.com/vakata/jstree/blob/master/src/misc.js से): लोड करने के बाद निम्नलिखित समारोह शामिल करने की ज़रूरत

// jstree conditional select node 
(function ($, undefined) { 
    "use strict"; 
    $.jstree.defaults.conditionalselect = function() { return true; }; 

    $.jstree.plugins.conditionalselect = function (options, parent) { 
    // own function 
    this.select_node = function (obj, supress_event, prevent_open) { 
     if(this.settings.conditionalselect.call(this, this.get_node(obj))) { 
     parent.select_node.call(this, obj, supress_event, prevent_open); 
     } 
    }; 
    }; 
})(jQuery); 

फिर जब jstree का एक उदाहरण आरंभ कुछ इस तरह करते हैं:

$('#jstree').jstree({ 
    'conditionalselect' : function (node) { 
    return <something that determines condition> ? true : false; 
    }, 
    'plugins' : ['conditionalselect'], 
    'core' : { 
    <core options> 
    } 
}); 
+2

इसमें एक बग है। मान लीजिए कि पेड़ केवल 1 चयन की अनुमति देता है, और आप ए का चयन करते हैं, और फिर आप बी का चयन करते हैं, और 'सशर्त' बी को अस्वीकार करता है। आप उम्मीद करेंगे कि ए को अभी भी चुना जाए, लेकिन ऐसा नहीं है। –