使用无容器语法并调用 Knockoutjs 模板时,IE8 无法在 foreach 控制流中正确呈现模板。初始化工作正常,但如果items
更改,则渲染错误。这只发生在 IE8 上,9 可以,甚至 7 也可以。
模型
function BrowseModel() {
var self = this;
self.items = ko.observableArray();
self.itemsStep = ko.observable(1);
self.repopulate = function() {
self.itemsStep(self.itemsStep() + 3);
return false;
};
ko.computed(function() {
var arr = [];
for (var i = self.itemsStep(); i <= self.itemsStep() + 5; i++) {
arr.push(i);
}
self.items(arr);
}, self);
}
ko.applyBindings(new BrowseModel());
看法
<a href="javascript:;" data-bind="click: repopulate">Change items</a>
<ul>
<!-- ko foreach: items -->
<!-- ko template: { name: 'product_template'} -->
<!-- /ko -->
<!-- /ko -->
</ul>
<ul>
<li data-bind="template: { foreach: items, name: 'product_template' }"></li>
</ul>
<br />
<div data-bind="text: ko.toJSON($data)"></div>
<script type="text/html" id="product_template">
<li data-bind="text: $data"></li>
</script>
我没有发现 IE 8 的行为模式。渲染是随机的。
除了不使用无容器控制流语法之外,我该如何解决这个问题?
LE:如果这很重要,我正在使用 F12 开发人员工具