2012-06-24 9 views
10

मेरे पास एक डोजो विजेट है जो मैं लिख रहा हूं जो उपयोगकर्ता के पृष्ठ पर एक लेबल और एक इनपुट बॉक्स जोड़ता है।मैं डोजो विजेट टेम्पलेट में अद्वितीय आईडी कैसे बना सकता हूं?

forlabel की विशेषता के लिए एक HTML आईडी मान की आवश्यकता है, लेकिन एक ही पृष्ठ पर एकाधिक उदाहरण बनाए जाने के मामले में एक डोजो विजेट में आईडी नहीं होनी चाहिए।

तो, क्या किसी के पास इन विरोधाभासी आवश्यकताओं के आसपास काम करने के बारे में कोई सुझाव है?

उत्तर

19

बॉक्स से यह कैसे dijit रजिस्ट्री सेट WidgetID (this.id) यदि विन्यास पैरामीटर वर्तमान जबकि निर्माण नहीं है:

constructor: function(args) { args=args || {}; 
    this.id = args.id || dijit.registry.getUniqueId(this.declaredClass) 
} 

टेम्पलेट्स स्ट्रिंग प्रतिस्थापन के साथ काम करता है, तो आप एक संपत्ति है, तो अपनी कक्षा में, foo, जिस तरह से टेम्पलेट में इस जगह कहना है जैसे:

templateString = '<div class="${foo}">'; 

आपके मामले में, जहां टेम्पलेट में कहीं आप अल है abel-> इनपुट जोड़ी, यह इस

<div><!--domNode--> 
    <table> 
     <td><label for="${id}-edit-title">Title</label></td> 
     <td><input id="${id}-edit-title" type="text" /></td> 
    </table> 
</div> 

तरह से चला जाता है तो

Allthough यह कुछ समय के लिए एक छोटा सा पुराना है, इस शुरू करने के लिए एक बहुत अच्छी जगह है: http://dojotoolkit.org/documentation/tutorials/1.6/templated/

पढ़ना जारी रखें dojo.Stateful पर तंत्र स्थापित करें/सेट करें

अंत में dijit._WidgetsInTemplateMixin पर जाएं।

+1

केवल एक सिर ऊपर: ऐसा लगता है कि टेम्पलेट में $ {id} को संदर्भित करने की आवश्यकता है, जिसे वह करने की ज़रूरत है। विजेट के जीवन चक्र तरीकों में से कोई भी कोई अतिरिक्त कोड नहीं है। – belzebu

+0

जैसा कि कहा गया है, 'बॉक्स से बाहर' :) पहला कोड ब्लॉक है जो dijit.widget स्वचालित रूप से आईडी सेट करता है – mschr

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