更改dojox CheckedMultiSelect控件的默认标签样式

问题描述:

我有dojox/form/CheckedMultiSelect控件。当我检查下拉菜单中的一些项目时,标签将变为“2选定项目”。如何将它定制为'2 State(s)Selected'之类的东西。更改dojox CheckedMultiSelect控件的默认标签样式

var stateCheckedMultiSelect = new CheckedMultiSelect ({ 
 
    id: 'stateChkMultiSelect', 
 
    dropDown: true, 
 
    multiple: true, 
 
    onChange: lang.hitch(this, function(result){ 
 
     stateChecked = result; 
 
    }) 
 
}); 
 

 
stateCheckedMultiSelect.set('style', {width: '100%', height: '30px', fontSize: '14px'}); 
 
stateCheckedMultiSelect.addOption({'label': 'Texas', 'value': 'TX'}); 
 
stateCheckedMultiSelect.addOption({'label': 'New York', 'value': 'NY'}); 
 
stateCheckedMultiSelect.startup();

enter image description here

我可以通过下面的代码来实现我的目的。不知道是否有更好的方法来做到这一点。如果是这样,请告知。

var StateCheckedMultiSelect = declare(CheckedMultiSelect, { 
 
     startup: function() { 
 
      this.inherited(arguments); 
 
      setTimeout(lang.hitch(this, function() { 
 
       this.dropDownButton.set("label", this.label);   
 
      })); 
 
     }, 
 

 
     _updateSelection: function() { 
 
      this.inherited(arguments); 
 
      if(this.dropDown && this.dropDownButton){ 
 
       var labels = []; 
 
       array.forEach(this.options, function(option){ 
 
        if(option.selected){ 
 
         labels.push(option.label); 
 
        } 
 
       }); 
 

 
       this.dropDownButton.set("label", labels.length + 'state(s) selected'); 
 
      } 
 
     } 
 
});