淘汰赛:2个嵌套的foreach在IE中与$ data无法正常工作

时间:2012-09-19 16:16:40

标签: javascript knockout.js

我正在使用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/

这是一个错误还是我做错了什么? 谢谢,

2 个答案:

答案 0 :(得分:1)

IE删除select标签内的注释。对于您的方案,您可能需要考虑将optionsCaptionoptions绑定一起使用。它看起来像是:http://jsfiddle.net/rniemeyer/2ebDt/1/

<!-- ko foreach: dropdowns -->
    <select data-bind="options: values, optionsCaption: title">
    </select>
<!-- /ko -->​

唯一的区别是标题没有value设置为title

答案 1 :(得分:0)

这是我的repeat绑定有用的地方。以下是使用repeathttp://jsfiddle.net/mbest/2ebDt/2/

的示例