我有一个自定义小部件'MyWidget',带有三个radion按钮,我希望它们属于同一个“组”。 如果我在模板文件的radiobuttons中设置'name'属性,那么问题是当我创建多个'MyWidget'小部件时,所有radiobuttons共享同一个组。
我试图用
添加单选按钮的“名称”radioWifget.set('name', some_value)
没有成功,也直接使用:
指向DOM代码dojo.query("INPUT[type='radio']", this.domNode).forEach( dojo.hitch(this, function(inputNode){
inputNode.name = 'perill_'+this.id;
}));
第二种形式将名称设置为attrbitue,但它不能作为一个组使用。
任何帮助。
提前致谢。
我道歉,因为我自己找到了答案。
我会冒险让别人投票给我,但更喜欢把解决方案放在这里,因为也许可以帮助我以外的其他人。
解决方案是“MyWidget”模板中的单选按钮必须包含在“dijit.form.Form”小部件中。这样每个'MyWidget'都有自己的radiobuttons组。
答案 0 :(得分:2)
我会选择自定义FormValueWidget并混合使用_WidgetsInTemplateMixin,如下所示:
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");
}
});
});
请在此处查看示例:http://jsfiddle.net/psoares/FdMEU/