2011-11-14 102 views
7

我有一個自定義小部件'MyWidget',它帶有三個放射按鈕,我希望它們是同一個「組」。 如果我在模板文件中的單選按鈕中設置了'name'屬性,那麼問題是我創建乘'MyWidget'小部件,然後所有單選按鈕共享相同的組。Dojo RadioButton,以編程方式設置組

我試着用

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'都會有自己的單選按鈕組。

回答

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/

相關問題