gpt4 book ai didi

javascript - 无容器控制流语法 - 模板无法在 IE8 中正确呈现

转载 作者:行者123 更新时间:2023-12-02 22:31:09 24 4
gpt4 key购买 nike

当使用无容器语法并调用 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 的行为模式。渲染有点随机。

除了不使用无容器控制流语法外,我该如何解决这个问题?

Fiddle

LE:如果这很重要,我会使用 F12 开发人员工具

最佳答案

Fixed jsFiddle

我已经在内部绑定(bind)中添加了一个  ,它似乎已经解决了这个问题。 IE8 中的 knockout 似乎不喜欢没有内容的嵌套无容器控件绑定(bind)。

请注意,根据我的经验,无容器控件绑定(bind)在 IE6-IE8 中往往会表现出不稳定的行为。如果您打算支持这些浏览器,我建议您避免使用无容器控件绑定(bind)。几乎所有涉及无容器控件绑定(bind)的场景都可以用带有数据绑定(bind)表达式的 HTML 元素重写为替代方案。

关于javascript - 无容器控制流语法 - 模板无法在 IE8 中正确呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com