Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有嵌套对象数组的胡须模板_Javascript_Mustache - Fatal编程技术网

Javascript 具有嵌套对象数组的胡须模板

Javascript 具有嵌套对象数组的胡须模板,javascript,mustache,Javascript,Mustache,可能需要一些帮助来找出我的胡子模板无法正确渲染的原因。我很困惑为什么下面的方法不起作用。我肯定这是我的一个小错误或是别的什么 var tableRows = [ {name: 'name1', values: ['1','2','3']}, {name: 'name2', values: ['1','2','3']}, {name: 'name3', values: ['1','2','3']} ]; var template

可能需要一些帮助来找出我的胡子模板无法正确渲染的原因。我很困惑为什么下面的方法不起作用。我肯定这是我的一个小错误或是别的什么

   var tableRows = [
    {name: 'name1',
     values: ['1','2','3']},
    {name: 'name2',
     values: ['1','2','3']},
    {name: 'name3',
     values: ['1','2','3']}
    ];

var template = $('#mustache-template').html();

$('#target').append(Mustache.render(template, {rows: tableRows}));
HTML模板:

<div id="mustache-template">
    <table>
        <tbody>
              {{#rows}}
                <tr class="">
                  <td>{{name}}</td>
                  {{#values}}
                    <td>{{.}}</td>
                  {{/values}}
                </tr>
              {{/rows}}
        </tbody>
    </table>
</div>

{{#行}
{{name}}
{{{#值}}
{{.}}
{{/values}}
{{/行}
我希望表中的每个数组项都是自己的行,但我得到的是:

[对象对象]


这里有一个jsFiddle来说明:

问题是浏览器将模板作为无效的表元素处理。将模板存储在这样的页面上不是一个好主意,请使用
包装它们:

<script id="mustache-template" type="text/template">
    <table>
      {{#rows}}
        <tr class="">
          <td>{{name}}</td>
          {{#values}}
            <td>{{.}}</td>
          {{/values}}
        </tr>
      {{/rows}}
    </table>
</script>

{{#行}
{{name}}
{{{#值}}
{{.}}
{{/values}}
{{/行}

我发现另一个可行的解决方案是这样注释掉胡子:

<div id="mustache-template">
    <table>
        <tbody>
             <!--  {{#rows}} -->
                <tr class="">
                  <td>{{name}}</td>
                  {{#values}}
                    <td>{{.}}</td>
                  {{/values}}
                </tr>
              <!-- {{/rows}} -->
        </tbody>
    </table>
</div>

{{name}}
{{{#值}}
{{.}}
{{/values}}

对我来说,这完全是我所希望的。我认为浏览器在
tr
标签之间看到代码是一种怪胎

哦,糟了!非常感谢。讽刺的是,我只是在沙箱中使用模板的标记进行测试,但在dev/prod代码中我们使用标记,这是第一次发生这种情况,所以我甚至没有想到这一点。再次感谢:)