knockout.js:在Internet Explorer 8中使用<select>上的无容器foreach失败

mg1*_*075 8 internet-explorer-8 knockout.js

RP尼迈耶的文章Knockout.js性能缺陷#3 -所有绑定火一起,一种方法来建立一个下拉列表提供:

<select data-bind="value: selectedOption">
    <!-- ko foreach: options -->
    <option data-bind="attr: { value: id }, text: name"></option>
    <!-- /ko -->
</select>
Run Code Online (Sandbox Code Playgroud)

这段代码也在文章的jsfiddle中.

http://jsfiddle.net/rniemeyer/QjVNX/

但是,当我使用这种在项目中构建选择的方法时,它工作正常,直到我在Internet Explorer 8中测试.IE8失败并且"无法解析绑定".

实际上,从IE8中的文章中运行小提琴也会导致错误.有没有办法使用knockout的foreach在IE8(我假设IE8或更少)中构建选择

RP *_*yer 8

是的,这绝对是一个问题.我将不得不更新帖子.IE将从select内部删除注释.

这是我们在github上看到的类似问题:https://github.com/SteveSanderson/knockout/issues/578

一种解决方案是使用Michael Best的repeat绑定:https://github.com/mbest/knockout-repeat.

它允许您做的一件事是使用不同的上下文多次重复单个元素.因此,在这种情况下,它的行为类似于无容器语法,只是没有注释.

重复样本:http://jsfiddle.net/rniemeyer/QjVNX/

您还可以选择使用文章(isolatedOptions)中的其他技术,除非您需要更多地控制选项元素.