2015-06-04 14 views
8

का उपयोग कर एक तत्व के डोम के तत्वों querySelector कैसे मैं अपने तत्व है:पॉलिमर

<dom-module id="x-el"> 
    <p class="special-paragraph">first paragraph</p> 
    <content></content> 
</dom-module> 

और मैं अपने जरूरी हिस्से में तरह

<x-el> 
    <p class="special-paragraph">second paragraph</p> 
</x-el> 

इसका इस्तेमाल:

Polymer({ 
    is: 'x-el', 

    ready: function() { 
    /* this will select all .special-paragraph in the light DOM 
     e.g. 'second paragraph' */ 
    Polymer.dom(this).querySelectorAll('.special-paragraph'); 

    /* this will select all .special-paragraph in the local DOM 
     e.g. 'first paragraph' */ 
    Polymer.dom(this.root).querySelectorAll('.special-paragraph'); 

    /* how can I select all .special-paragraph in both light DOM and 
     local DOM ? */ 
    } 
}); 

है पॉलिमर बिल्ट-इन का उपयोग करके ऐसा करना संभव है? या मुझे डिफ़ॉल्ट डोम एपीआई का उपयोग करना चाहिए?

उत्तर

11

पॉलिमर नहीं एक सहायक समारोह या अमूर्त है कि दोनों प्रकाश और स्थानीय DOMS से नोड्स सूची जाएगा प्रदान करता है।

यदि आपको इस कार्यक्षमता की आवश्यकता है, तो आप this.querySelector(selector) का उपयोग कर सकते हैं।

Polymer.dom(this.root).querySelectorAll(selector) विधि से अलग एक तरफ नोट पर, पॉलिमर $$ उपयोगिता फ़ंक्शन भी प्रदान करता है जो किसी तत्व के स्थानीय डोम के सदस्यों तक पहुंचने में सहायता करता है। पहले स्थानीय डोम जो चयनकर्ता से मेल खाता में तत्व:

<dom-module id="my-element"> 
    <template> 
    <p class="special-paragraph">...</p> 
    <content></content> 
    </template> 
</dom-module> 

<script> 
    Polymer({ 
    is: 'my-element', 
    ready: { 
     this.$$('.special-paragraph'); // Will return the <p> in the local DOM 
    } 
    }); 
</script> 

ध्यान दें कि, querySelectorAll के विपरीत, $$ समारोह केवल एक ही तत्व देता है: यह समारोह इस प्रकार प्रयोग किया जाता है।

+2

यह स्पष्ट करने योग्य हो सकता है कि 'यह $$। (चयनकर्ता) 'तत्वों में ** पहला ** नोड ** स्थानीय डीओएम ** देता है जो' चयनकर्ता 'से मेल खाता है। –

+0

टिप के लिए धन्यवाद, @benhjt! मैंने स्पष्टीकरण में फेंक दिया। :) –

+1

@VartanSimonian समाधान के लिए धन्यवाद! मुझे लगता है कि यह पॉलिमर की एक अस्पष्ट विशेषता है। 'यह' तत्व को संदर्भित करता है, फिर क्यों 'पॉलिमर.डोम (यह)' का उपयोग केवल प्रकाश डोम में हेरफेर करने के लिए किया जाता है? मुझे लगता है कि यह थोड़ा उलझन में है। – user544262772