【问题标题】:Knockout: Why would comment tags not be working?淘汰赛:为什么评论标签不起作用?
【发布时间】:2013-06-12 22:54:58
【问题描述】:

如果我试试这个:

<!-- 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 移动到评论,它停止工作。

更新:如果我删除 &lt;!-- /ko --&gt; 结束标记,我不会收到错误消息,而我认为我应该收到 Cannot find closing comment tag to match。浏览器根本无法识别评论标签:/

【问题讨论】:

  • 控制台有错误吗?
  • 发布的代码应该可以工作。您的实际代码中有其他东西会导致您的问题。你有任何错误控制台吗?你能重现这个问题吗?也许在 JSFiddle 中?
  • 不,在这两种情况下我都可以通过 chrome 中的手表控制台访问 data.cards
  • @nemesv 我试过小提琴,但它按预期工作:/
  • 如果是IE,像这样转义foreach:

标签: knockout.js


【解决方案1】:

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

<!--[if lt IE 9]> 
 <script> 
    document.createElement("ko");
 </script>
<![endif]-->

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 2016-05-20
    • 2014-06-19
    • 2016-02-17
    相关资源
    最近更新 更多