手动创建选择框时,IE9不起作用。就我所见,它没有抛出错误而且没有任何渲染。
<select id="attributes" data-bind="value: value, valueAllowUnset: true" class="form-control">
<!-- ko foreach: groupedAttributes -->
<optgroup data-bind="attr : { label: name }" label="default">
<!-- ko foreach: things -->
<option data-bind="text: name, disabled:disabled, value: $data"></option>
<!-- /ko -->
</optgroup>
<!-- /ko -->
</select>
JS
var vm = {
value: ko.observable(),
groupedAttributes : [
{
name: "thing 1",
things : [ { name: "test1", disabled: false},{ name: "test2", disabled: false} ]
},
{
name: "thing 2",
things : [ { name: "test3", disabled: false}, { name: "test4", disabled: false} ]
}
]
};
ko.applyBindings(vm);
适用于Chrome和FF。
有什么想法?
答案 0 :(得分:1)
我们可以通过避免使用containerless
条件语句
修改后的视图:
<select id="attributes" data-bind="value: value, valueAllowUnset: true,foreach:groupedAttributes" class="form-control">
<optgroup data-bind="attr : { label: name },foreach:things" label="default">
<option data-bind="text:name,value: $data"></option>
</optgroup>
</select>
<div data-bind="text: ko.toJSON(value)"></div>
工作小提琴 here
PS:在IE 8 +,Chrome,Firefox中测试。
答案 1 :(得分:1)
IE9不允许除<input type="number" id="plannedVisit" styleClass="form-control" >
和<select>
以外的<option>
中的任何其他子元素;这包括评论。 IE9(也是IE8)在Knockout可以评估任何绑定之前很久就会删除所有其他内容,所以当KO想要应用绑定时,注释已经消失了。
您必须使用<optgroup>
绑定或使用options
元素本身的foreach
绑定:
<optgroup>