複数選択入力の can-value ヘルパーを使用して、選択した値をレンダリングするのに問題があります。
この問題は特に、オプションを DOM で使用できるようにするのではなく、can.Map を使用してオプションを動的にレンダリングする場合に発生します。
問題を説明するフィドルは次のとおりです。
http://jsfiddle.net/neildcruz19/ramey3zo/6/
コントロール
var selectControlInst = null;
var selectControl = can.Control({
},{
init : function ( element, options) {
$( element ).html(can.view('multiSelectTemplate',this.getMap()));
},
getMap : function() {
return new can.Map({
selectedOptions : ['option1','option2'],
options : [{
display :'Option 1',
value :'option1'
},
{
display :'Option 2',
value :'option2'
},
{
display :'Option 3',
value :'option3'
},
{
display :'Option 4',
value :'option4'
},
{
display :'Option 5',
value :'option5'
}]
});
}
});
$(function(){
selectControlInst = new selectControl('.selectContainer');
});
口ひげ/HTML
<script id="multiSelectTemplate" type="text/mustache">
<select class="multipleSelect" can-value="selectedOptions" multiple="multiple" size="5">
{{#options}}
<option value="{{value}}">{{display}}</option>
{{/options}}
</select>
<br/>
<br/>
<select class="multipleSelect" can-value="selectedOptions" multiple="multiple" size="5">
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
<option value="option4">Option 4</option>
<option value="option5">Option 5</option>
</select>
</script>
この状況を回避する方法はありますか?