如果我试试这个:
<!-- ko foreach: data.cards -->
<div>
SHOULD SEE MULTIPLE TIMES BUT ONLY SEE ONCE
</div>
<!-- /ko -->
我只得到一个没有数据的div。如果我这样做:
<div data-bind="foreach: data.cards">
THIS IS SEEN MULTIPLE TIMES
</div>
它按预期工作 - 带有数据的多个div。为什么第一种方法不起作用?这特别奇怪,因为在另一个页面中,这种结构工作正常。
以下是我在Chrome控制台中看到的内容:
这是我要回到视图中的vm:
var vm = {
activate: activate,
data: observableData,
refresh: refresh,
};
我改变的唯一一件事就是将foreach从div移到评论中,它就会停止工作。
更新:如果我删除了<!-- /ko -->
结束标记,那么当我相信我应该获得Cannot find closing comment tag to match
时,我不会收到错误。浏览器根本无法识别注释标记:/
答案 0 :(得分:1)
我们的项目存在同样的问题,因为我们会压缩响应并删除注释。为避免在foreach中使用<div>
或<span>
,一种解决方法是定义自己的<ko>
元素。如果这样做,您将需要包含IE8的以下脚本和较低的支持:
<!--[if lt IE 9]>
<script>
document.createElement("ko");
</script>
<![endif]-->