2011-11-14 20 views
7

Tengo un widget personalizado 'MyWidget' con tres botones radion Me gustaría ser del mismo "grupo". Si configuro un atributo 'nombre' en los botones de radio en el archivo de plantilla, entonces el problema es cuando creo widgets 'MyWidget' multiplicados, entonces todos los botones de radio comparten el mismo grupo.Dojo RadioButton, configure un grupo programáticamente

Traté de poner el 'nombre' del botón de opción con

radioWifget.set('name', some_value) 

sin éxito, y también ir directamente al código DOM con:

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

La segunda forma establece el nombre attrbitue pero no funciona como un grupo.

Cualquier ayuda.

Gracias de antemano.


Pido disculpas porque he encontrado la respuesta por mi cuenta.

Me arriesgaré a que alguien me vote negativamente pero prefiero poner la solución aquí porque tal vez pueda ayudar a alguien que no sea yo.

La solución es que los botones de opción en la plantilla de "MyWidget" deben estar encerrados en un widget 'dijit.form.Form'. De esta forma, cada 'MyWidget' tendrá sus propios grupos de botones de radio.

Respuesta

2

me gustaría ir para un FormValueWidget encargo y mezclar _WidgetsInTemplateMixin, así:

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"); 
     } 
    }); 
}); 

ver un ejemplo aquí: http://jsfiddle.net/psoares/FdMEU/

Cuestiones relacionadas