2012-04-12 15 views
8

डेटा में शामिल होने के बारे में त्वरित प्रश्न शामिल है। मान लें कि मेरे पास कुछ तत्व हैं जिनमें प्रत्येक में एक है। जब मैं प्रारंभ में डेटा में शामिल होता हूं, तो यह स्वचालित रूप से उन तत्वों द्वारा विरासत में प्राप्त होता है जिन्हें मैं प्रवेश चयन में जोड़ता हूं।डेटा में विरासत

जब डेटा बदल जाता है और मैं इसे पुनर्जीवित करता हूं तो मुझे उम्मीद थी कि तत्व नए डेटा उठाएंगे लेकिन ऐसा नहीं हुआ।

इस मैं स्पष्ट रूप से इस तरह निचले स्तर पर डेटा rebind करने की जरूरत को संभालने के लिए:

gElements.selectAll("circle") 
    .data(function(d) { return [d]; } 
    .enter().append("circle"); 

यह दोनों निर्माण मामले और बाद rebind संभालती है। लेकिन ऐसा लगता है कि लौटने के रूप में यह अनावश्यक लगता है [डी] अनिवार्य रूप से मूल तत्व से डेटा की प्रारंभिक विरासत के साथ होता है।

क्या यह दृष्टिकोण इसे संभालने का सही तरीका है, या क्या मैं यहां कहीं भ्रमित हो रहा हूं?

उत्तर

17

जब आप selection.data के माध्यम से तत्वों को डेटा बाध्य करते हैं, तो यह उन तत्वों से जुड़े डेटा को अद्यतन करता है। हालांकि, यह स्वचालित रूप से नए तत्वों को वंश तत्वों को प्रसारित करता है; आपको यह स्वयं करना होगा।

जब आप selection.select पर कॉल करते हैं, जो selection.append के समकक्ष है, तो प्रत्येक चयनित तत्व के लिए अभिभावक का डेटा चयनित बच्चे से जुड़ा होता है। जब आप selection.selectAll पर कॉल करते हैं, तो डेटा बाध्य नहीं होता है, इसलिए आपको बाद में बच्चों को नए डेटा को बाध्य करने के लिए select.data को कॉल करना होगा।

अधिक संदर्भ देखने के बिना अपने प्रश्न का उत्तर देना मुश्किल है। आप gElements पर डेटा अपडेट कर दिया है, और प्रत्येक जी तत्व को एक मंडली में शामिल है, तो आप selection.select का उपयोग कर बच्चे को सर्कल के माता पिता जी से डेटा का प्रचार कर सकते हैं:

gElements.select("circle"); 

कोड स्निपेट आप ने लिखा केवल तभी इस्तेमाल किया जाएगा यदि सर्कल गुम है, तो आप एक नया सर्कल बनाना चाहते हैं। यह Thinking with Joins में वर्णित है। आपके द्वारा लिखे गए सटीक कोड पर निर्भर हो सकता है कि यह दोनों दर्ज और अपडेट, या केवल अपडेट पर निष्पादित किया जा रहा है या नहीं।

+0

हाँ, आप सही हैं, मेरे पास प्रति केवल 1 सर्कल है। मुझे एहसास नहीं हुआ कि चयनित डेटा विरासत का चयन करें, लेकिन मैं प्रलेखन में देखता हूं जो वास्तव में यह कहता है। मुझे यह थोड़ा सा काउंटर-अंतर्ज्ञानी लगता है क्योंकि मैंने हमेशा पढ़ने-योग्य ऑपरेशन के रूप में चयन करने के कार्य के बारे में सोचा है, लेकिन यह एक मामला वास्तव में नोड को संशोधित करने का कारण बनता है। –

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