2013-02-22 34 views
15

मुझे बहुभुज के समूह के साथ एक मौजूदा svg मिला है। प्रत्येक बहुभुज में एक अद्वितीय आईडी होती है, और प्रत्येक आईडी के साथ, मेरे पास कुछ संबंधित डेटा होता है।सुनिश्चित करें कि डी 3 डेटा तत्व आईडी से मेल खाता है?

मेरा प्रश्न यह है: अगर मैं प्राकृतिक d3 करना शामिल हो:

d3.selectAll("polygon").data(array_of_data) 

वहाँ वैसे भी बीमा करने के लिए है कि एक बहुभुज के साथ जुड़े डेटा तत्व सही एक है है?

या क्या मुझे चयनित पॉलीगन्स के क्रम के समान array_of_data का ऑर्डर रखने की आवश्यकता है?

उत्तर

22

डी 3 का data() फ़ंक्शन एक वैकल्पिक दूसरा तर्क लेता है जिसका उद्देश्य डेटाम और डोम नोड्स के बीच ऐसा पत्राचार प्रदान करना है। इस प्रयास करें: data() को दूसरा तर्क एक कॉलबैक समारोह है कि, जब एक गृहीत साथ कहा जाता है, महत्वपूर्ण यह है कि प्रत्येक डोम नोड बांधता है यह इसी गृहीत है रिटर्न है

d3.selectAll('polygon').data(array_of_data, function(d) { return d.id; }); 

है। जब आप ऐसा फ़ंक्शन प्रदान नहीं करते हैं, तो D3 को कोई विकल्प नहीं छोड़ा जाता है लेकिन डीओएम नोड्स को डेटाम को बांधने के लिए इंडेक्स का उपयोग करने के लिए छोड़ दिया जाता है।

+0

आप कैसे निर्दिष्ट करते हैं कि दिए गए कुंजी से कौन सा तत्व मिलना चाहिए? डी 3 कैसे जानता है कि यह आईडी फ़ील्ड है जिसे डीआईडी ​​से मेल खाना चाहिए? या यह करता है? – Maus

+0

सभी डी 3 करता है यह सुनिश्चित करता है कि एक ही तत्व हमेशा दिए गए डेटाम के लिए उपयोग किया जाता है। यदि आप यही पूछ रहे हैं तो यह तत्व की आईडी विशेषता सेट नहीं करता है। यह आंतरिक रूप से निर्दिष्ट कुंजी पर एक तत्व को आंतरिक रूप से मानचित्र करता है। यदि आपके डेटा में सभी .id गुण हैं तो उपर्युक्त कोड का उपयोग करें। यदि इसके बजाय आपके डेटा में अद्वितीय आईडी निर्धारित करने का कोई अन्य तरीका है, तो आप इसे कॉलबैक के अंदर कर सकते हैं, जैसे: 'function (d) {return d.getUniqueId(); } ' –

+4

इसलिए यदि मेरे बहुभुजों का नाम पहले से है, तो डी 3 को बताने का कोई तरीका नहीं है कि उसी नाम वाले डेटाम बहुभुज से मेल खाते हैं? – Maus

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

  • कोई संबंधित समस्या नहीं^_^