我不能让for-each在IE9中正常工作,但是在IE10,IE11中工作
我的方式有什么问题吗?以下代码可用于在IE9中重现该问题:
var vm = {
MyMessages: [{
MessageType1: 'A',
MessageToShow1: 'B '
}]
};
ko.applyBindings(vm);

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<ul data-bind="foreach: {data: MyMessages, as: 'foo'} " class="list-unstyled">
<li>
<div>
<a href="#" class="close" data-dismiss="alert">×</a>
<em><label data-bind='text: foo.MessageType1' /></em>
<label data-bind='text: foo.MessageToShow1' />
</div>
</li>
</ul>
&#13;
我得到的错误是:
&#39;富&#39;未定义
答案 0 :(得分:3)
tl; dr:使用打开和关闭标记写出label
标记。
在IE 9模式下渲染时,由于使用了“自动关闭”标记,IE错误地将某些元素错误归类。 label
就是这样一个标签。由于处于IE 9模式,它也没有使用标准(HTML5)模式。 IE 10模式将以标准模式呈现它。因此,根据模式,this question表示标签的解释方式不同。
我想在IE 9中,它将标签视为没有结束标签的开放标签,因此将绑定应用于错误的元素。
通过更改标签以使用打开和关闭标签,它似乎可以修复它。
<ul data-bind="foreach: {data: MyMessages, as: 'foo'} " class="list-unstyled">
<li>
<div>
<a href="#" class="close" data-dismiss="alert">×</a>
<em><label data-bind='text: foo.MessageType1'></label></em>
<label data-bind='text: foo.MessageToShow1'></label>
</div>
</li>
</ul>