3

如果我试试这个:

<!-- 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 的手表控制台中看到的内容:

在此处输入图像描述

这是我要返回视图的虚拟机:

var vm = {
    activate: activate,
    data: observableData,
    refresh: refresh,
};

我唯一改变的是将 foreach 从 div 移动到评论,它停止工作。

更新:如果我删除<!-- /ko -->结束标签,我不会收到错误,当我相信我应该得到Cannot find closing comment tag to match. 浏览器根本无法识别评论标签:/

4

1 回答 1

1

我们的项目也遇到了同样的问题,因为我们压缩了响应并删除了评论。为了避免使用<div>or<span>为您的 foreach 的一种解决方法是定义您自己的<ko>元素。如果你这样做,你将需要为 IE8 和更低的支持包含以下脚本:

<!--[if lt IE 9]> 
 <script> 
    document.createElement("ko");
 </script>
<![endif]-->
于 2013-06-12T14:54:58.333 回答