2011-10-25 7 views
6

क्या डोमो में सभी विजेट वंशजों को खोजने के लिए Dojo में कोई तरीका है? मैंने नीचे दिए गए उदाहरण का उपयोग किया है, यह केवल तत्व के बच्चों को सूचीबद्ध करेगा, इस मामले में दस्तावेज़ ऑब्जेक्ट के बच्चे हैं, लेकिन सभी वंशज या नेस्टेड विजेट नहीं हैं। उम्मीद है कि यह स्पष्ट है।क्या डोमो में सभी विजेट वंशजों को खोजने के लिए Dojo में कोई तरीका है?

var widgets = dijit.findWidgets(dojo.doc); 
dojo.forEach(widgets, function(w) { 
    console.log(w); 
}); 

मैं बस अपना खुद का पुनरावर्ती क्रिया लिख ​​सकता है लेकिन मुझे यकीन है कि मैं एक डोजो विधि है जो पहले से ही इस करता है पर याद नहीं कर रहा हूँ बनाना चाहते हैं।

बहुत धन्यवाद

+0

बस स्पष्ट होने के लिए आपको एक समारोह एक domNode नीचे विगेट्स के सभी प्राप्त करना चाहते हैं, उन विगेट्स जो अन्य विजेट में नेस्टेड रहते हैं सहित? – BuffaloBuffalo

+0

@ screenm0nkey, क्या आपने कभी इसका समाधान ढूंढ लिया है? मुझे यह सटीक कार्यक्षमता भी चाहिए। – carmenism

उत्तर

9

हम्म, dijit.findWidgets(parentWidget.domNode)?

संपादित करें ओह, अब मुझे पता है कि विजिट्स रिकर्सिवली खोज नहीं करते हैं।

मैंने dijit.findWidgets स्रोत कोड की जांच की है और यह सब widgetid विशेषता के साथ नोड्स की जांच है जो dijit रजिस्ट्री में दर्शाए जाते हैं। निम्न संस्करण dojo.query का उपयोग करता रिकर्सिवली इसी खोज करने के लिए:

function findEvenTheNestedWidgets(innitialNode){ 
    return dojo.query("[widgetid]", innitialNode) 
    .map(dijit.byNode) 
    .filter(function(wid){ return wid;}) //filter invalid widget ids that yielded undefined 
} 
+0

हे लापता नहीं। क्या यह अनुमान था? मुझे नहीं लगता कि एक dojo.findWidgets विधि है। – screenm0nkey

+0

ओह, मेरा मतलब डीजिट था ... महत्वपूर्ण हिस्सा यह है कि आप दस्तावेज़ में सभी विजेट्स को खोजने के बजाय खोज शुरू करने के लिए विजेट के domNode का चयन कर सकते हैं। – hugomg

+0

लेकिन वह अभी भी मुझे सीधे उस डोमोड के तहत बच्चों को देता है, न कि बच्चों और बच्चों के बच्चों के अंदर घोंसला वाले विजेट। – screenm0nkey

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