これを試して:
dojo.ready(function() {
// 1.7.2 template has 'dojoxCheckedMultiSelectHidden' className on its select from template.
// if this is different (inspect your DOM after onload), adapt the query selector
var opts = dojo.query('.dojoxCheckedMultiSelectHidden option'),
store = dijit.byId('listStore');
store.fetch({ onComplete: function(items) {
for(var i = 0; i < items.length; i++) {
if(!opts[i]) continue;
else opts[i].title = store.getValue(items[i], 'title');
}
}});
});
それがすることは、それが
- ストアがサーバーからデータをロードするように強制し、items 配列を返します (
query: {id:'*'}
)
- それらを繰り返し、タイトルをオプションに配置します。
代わりに、マークアップを介してオプションを展開している場合、タイトル属性はこのウィジェットにマップされず、構成パラメーターとして許可されているマークアップのみが有効です。つまり、タイトル属性は破棄されます。ウィジェットは非常に貧弱で、dojotoolkit の残りの部分で更新されていないため、それほど柔軟ではありません。
パーサーがマークアップに対して実行されると、タイトル属性は無視されます (マークアップは破棄され、CheckedMultiSelect テンプレートに置き換えられます。 dojobase/dojox/form/resources/CheckedMultiSelect.htmlを参照してください)。
だから、解決策は - でマップされたJS配列を維持することです
// array with indexes matching the options from markup
var titles = [ "title1", "title2", "title3" ];
dojo.addOnLoad(function() {
// note, that the '_0' is a generic ID, config options are not accepting the id attribute either
// calling private function, again not correctly layed out
var childObjects = dijit.byId('dojox_form_CheckedMultiSelect_0')._getChildren();
dojo.forEach(childObjects, function(optObject, index) {
optObject.labelNode.title = titles[index];
});
});