我正在使用Knockout.js 2.1.0和jQuery 1.8 我有2个嵌套的foreach,这在Chrome和Firefox中运行良好,但在IE中没有(在8和9中测试) 在IE中,第二个嵌套的foreach中的$ data仍然对应于父foreach。
这是我的观点:
<!-- ko foreach: dropdowns -->
<select>
<option data-bind="text: title, value: title"></option>
<!-- ko foreach: values -->
<option data-bind="text: $data, value: $data"></option>
<!-- /ko -->
</select>
<!-- /ko -->
JavaScript:
var viewModel = {
dropdowns: [
{
title: "Dropdown 1",
values: ["value 1.1", "value 1.2", "value 1.3"]
},
{
title: "Dropdown 2",
values: ["value 2.1", "value 2.2", "value 2.3"]
},
{
title: "Dropdown 3",
values: ["value 3.1", "value 3.2", "value 3.3"]
}
]
}
ko.applyBindings(viewModel);
我做了一个jsfiddle来测试这个问题: http://jsfiddle.net/2ebDt/
这是一个错误还是我做错了什么? 谢谢,
答案 0 :(得分:1)
IE删除select标签内的注释。对于您的方案,您可能需要考虑将optionsCaption
与options
绑定一起使用。它看起来像是:http://jsfiddle.net/rniemeyer/2ebDt/1/
<!-- ko foreach: dropdowns -->
<select data-bind="options: values, optionsCaption: title">
</select>
<!-- /ko -->
唯一的区别是标题没有value
设置为title
。
答案 1 :(得分:0)
这是我的repeat
绑定有用的地方。以下是使用repeat
:http://jsfiddle.net/mbest/2ebDt/2/