2011-10-07 15 views
12

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

मुझे ऑनलाइन मामलों को खोजने में परेशानी हो रही है जहां किसी के पास backbone.js में समान डेटा प्रकार का मनमाने ढंग से गहरा पदानुक्रम है। क्या मैं सिर्फ अपनी मॉडल कक्षा को अपने संग्रह वर्ग का एक उदाहरण दूंगा? बचत कैसे की जाएगी? मुझे पता है कि यह एक व्यापक सवाल है, लेकिन मुझे मुख्य रूप से कुछ सामान्य सुझावों की आवश्यकता है कि इस तक कैसे पहुंचे (या बेहतर अभी तक, एक नमूना जहां मैंने देखा नहीं है)।

+0

पत्ती तत्वों खुद को उत्पादों रहे हैं? – papdel

+0

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

उत्तर

5

आप पेड़ को मूल-बाल लिंक वाले आइटमों के संग्रह के रूप में मॉडल कर सकते हैं। तो आपके मॉडल में ऐसा कुछ होना चाहिए:

 id:   id, 
     parent_id: parent_id 

फिर जेएस में रिकर्सिव फ़ंक्शन कॉल का उपयोग करके संग्रह से एक पेड़ बनाएं। यहाँ लाइव कोड का एक टुकड़ा है: Underscore.js का उपयोग कर (जो backbone.js के लिए एक शर्त भी है) PARENT_ID द्वारा समारोह समूह आइटम कॉल करने से पहले

function buildTree(branch, list) { 
    //recursively builds tree from list with parent-child dependencies 
    if (typeof branch == 'undefined') return null; 
    var tree = []; 
    for(var i=0; i<branch.length; i++)  
    tree.push({ 
     item: branch[i], 
     children: buildTree(list[ branch[i].id ], list) 
    }); 
    return tree; 
} 

, और फिर कहते हैं:

var list = _.groupBy(arrayOfItems,'parent_id'); 
    var tree = buildTree(list[0],list); 

अंत में, दोबारा रिकर्सिव फ़ंक्शन कॉल का उपयोग करके पेड़ प्रस्तुत करें (यहां कोई उदाहरण नहीं है, लेकिन मुझे विश्वास है कि आपको यह विचार मिला है)।

पीएस। यदि आप सही parent_id इंगित करते हैं तो किसी आइटम को जोड़ना/सहेजना कोई समस्या नहीं है।

+0

ग्रेट समाधान, धन्यवाद! – Casey

0

आप इस लिंक पर जवाब पा सकते हैं।

Backbone with a tree view widget

आप श्रेणीबद्ध पेड़ बनाने के लिए कई तरीके हैं। उनमें से एक मैंने अपने प्रश्न में पोस्ट किया। यदि आप चाहते हैं, तो इसे आजमाएं! मैंने इसे बनाने के लिए Backbone.js और Epoxy.js का उपयोग किया। Epoxy.js

http://epoxyjs.org/index.html

इस पुस्तकालय के लिए लिंक आप आसानी से अलग घटनाओं बाध्य करने के लिए प्रदान करते हैं क्या होता है पेड़

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