Knockout.js模板呈现奇怪的换行符

时间:2014-02-12 19:11:36

标签: javascript html knockout.js

我有一些嵌套的淘汰模板生成菜单

模板可能如下所示

<script id="menu-template" type="text/html">
    <ul data-bind="template: { name: 'topmenu-template', foreach: $data }" class="nav navbar-nav"></ul>
</script>

<script id="topmenu-template" type="text/html">
    <!-- ko ifnot: Children.length > 0-->
    <li>
        <a data-bind="text: Name + ' x', attr: { href: Url, title: Name }"></a>
    </li>
    <!-- /ko -->​
    <!-- ko if: Children.length > 0-->
    <li data-bind="template: { name: 'child-template', foreach: $data }" class="dropdown"></li>
    <!-- /ko -->​
</script>

这会呈现像这样的东西

enter image description here

如果我添加类似<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />的内容类型,它将会是这样的

enter image description here

还有很多空白,造型中没有。我发现的是每个&#8203;元素之间都有<li>。例如

enter image description here

有关如何处理此事的任何建议吗?

由于

==更新==

其余模板

<script id="child-template" type="text/html">
    <!--ko if: Level <= 1-->
    <a class="dropdown-toggle" data-bind="html: Name + ' ' + Level + 'y<b class=\'caret\'></b>', attr: { href: Url, title: Name }" data-toggle="dropdown"></a>
    <ul data-bind="template: { name: 'childmenu-template', foreach: Children }" class="dropdown-menu"></ul>
    <!--/ko-->​
    <!--ko if: Level > 1-->
    <a class="dropdown-toggle" data-bind="html: Name + ' ' + Level + 'z<b class=\'caret\'></b>', attr: { href: Url, title: Name }" data-toggle="dropdown"></a>
    <ul data-bind="template: { name: 'childmenu-template', foreach: Children }" class="" style="white-space: nowrap"></ul>
    <!--/ko-->​
</script>

<script id="childmenu-template" type="text/html">
    <!--ko ifnot: Children.length > 0-->
    <li>
        <a data-bind="text: Level + ' ' + Name, attr: { href: Url, title: Name }"></a>
    </li>
    <!--/ko-->​
    <!--ko if: Children.length > 0-->
    <li data-bind="template: { name: 'child-template', foreach: $data }" class=""></li>
    <!--/ko-->​
</script>

1 个答案:

答案 0 :(得分:2)

源中有零宽度空格字符。所以你只需要删除它们。它们出现在每个结束虚拟元素注释的末尾。以下是您在十六进制编辑器中的Unicode代码:

0000000330: 002F 006B 006F 0020 │ 002D 002D 003E 200B  /ko -->​

注意最后的200B8203为十六进制。