2011-11-14 9 views
7

सेटअप करें मेरे पास एक कस्टम विजेट 'MyWidget' है जिसमें तीन रेडियन बटन हैं, मैं एक ही "समूह" का होना चाहता हूं। यदि मैं टेम्पलेट फ़ाइल में radiobuttons में 'नाम' विशेषता सेट करता हूं, तो समस्या तब होती है जब मैं 'MyWidget' विजेट्स गुणा करता हूं तो सभी radiobuttons एक ही समूह को साझा करते हैं।डोजो रेडियोबटन, एक समूह प्रोग्रामेटिक रूप से

dojo.query("INPUT[type='radio']", this.domNode).forEach(dojo.hitch(this, function(inputNode){ 
    inputNode.name = 'perill_'+this.id; 
})); 

दूसरा रूप नाम attrbitue सेट:

मैं

radioWifget.set('name', some_value) 
सफलता के बिना

, और भी साथ डोम कोड को सीधे जाने के साथ रेडियो बटन के 'नाम' डालने की कोशिश की लेकिन यह एक समूह के रूप में काम नहीं करता है।

कोई मदद।

अग्रिम धन्यवाद।


मैं क्षमा चाहता हूं क्योंकि मुझे स्वयं जवाब मिला।

मुझे किसी को नकारात्मक रूप से वोट देने का जोखिम होगा, लेकिन यहां समाधान डालना पसंद है क्योंकि शायद मेरे अलावा किसी अन्य की मदद कर सकता है।

समाधान "MyWidget" के टेम्पलेट में रेडियो बटन 'dijit.form.Form' विजेट में संलग्न होना चाहिए। इस तरह हर 'माईविजेट' के अपने रेडियोबूटन समूह होंगे।

उत्तर

2

मैं एक कस्टम FormValueWidget के लिए जाने के लिए और मिश्रण _WidgetsInTemplateMixin, इस तरह होगा: http://jsfiddle.net/psoares/FdMEU/

:

declare([ 
    "dojo/_base/declare", 
    "dijit/form/_FormValueWidget", 
    "dijit/_WidgetsInTemplateMixin", 
    "dijit/form/RadioButton", 
    "dojo/domReady!" 
], function (declare, _FormValueWidget, _WidgetsInTemplateMixin) { 

    return declare([_FormValueWidget, _WidgetsInTemplateMixin], { 
     templateString: "<div><h2>Group of radioBtns '${name}'</h2>" + 
      "<input type='radio' ${!nameAttrSetting} data-dojo-attach-point='focusNode' data-dojo-type='dijit/form/RadioButton' checked='checked' data-dojo-props='value:\"radio1\"'></input>" + 
      "<input type='radio' ${!nameAttrSetting} data-dojo-type='dijit/form/RadioButton' data-dojo-props='value:\"radio2\"'></input>" + 
      "<input type='radio' ${!nameAttrSetting} data-dojo-type='dijit/form/RadioButton' data-dojo-props='value:\"radio3\"'></input>" + 
      "<input type='hidden' value='${value}'/>" + 
      "</div>", 
     _getValueAttr : function() { 
      var selectedRadio = registry.findWidgets(this.domNode).filter(function(w){ 
       return w.get("checked"); 
      }).pop(); 
      return selectedRadio.get("value"); 
     } 
    }); 
}); 

यहाँ एक उदाहरण देखें