【问题标题】:Knockout: 2 nested foreach not working correctly in IE with the $data淘汰赛:2 个嵌套的 foreach 在 IE 中使用 $data 无法正常工作
【发布时间】:2012-09-20 06:50:10
【问题描述】:

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

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

【问题讨论】:

  • IE 去除 select 标签内的 cmets。

标签: javascript knockout.js


【解决方案1】:

IE 会在选择标签内去除 cmets。对于您的方案,您可能需要考虑将optionsCaptionoptions 绑定一起使用。它看起来像:http://jsfiddle.net/rniemeyer/2ebDt/1/

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

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

【讨论】:

  • 谢谢!小而重要的细节!
【解决方案2】:

这就是我的repeat 绑定有用的地方。这是您使用 repeat 的示例:http://jsfiddle.net/mbest/2ebDt/2/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 2013-04-21
    • 2014-12-11
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2019-03-28
    相关资源
    最近更新 更多