在同一个元素上调用两次Mustache会失败吗?

时间:2012-01-10 16:57:41

标签: javascript jquery mustache

我有一些代码将div的html()设置为针对特定JSON的Mustache调用的结果

    function render_bugs(json_file){
        $.getJSON(json_file, function(json) {

        $("#bug-list").html(Mustache.to_html($('#template').html(), json));

第一次调用函数时,没问题。但是当我用不同的“json_file”调用它时。它失败并出现以下错误:

haystack is null    
return haystack.indexOf(this.otag + needle) != -1;

我最初认为问题出在JSON文件中,所以我交换了参数名称,但不是这样,json很好。

然后我添加了一个测试行,我只是在胡子调用之前设置了html,如下所示:

    function render_bugs(json_file){
        $.getJSON(json_file, function(json) {

            $('#bug-list').html('<p>foo</p>');
        $("#bug-list").html(Mustache.to_html($('#template').html(), json));

它根本不起作用。

如果要呈现的元素已经包含内容,就像Mustache不想工作

有什么方法吗?

1 个答案:

答案 0 :(得分:2)

完成了工作

这是该页面的标记:

        <div id="bug-list" />
        <div id="template">
            <p><strong>{{bugs}}</strong> bugs found in mingle</p>
            {{#repos}}
            <h2>{{repo-name}}</h2>
                <ol>
                    {{#hotspots}}
                        <li>
                        <p class="file-name"><a>{{score}} - {{file}}</a></p>
                            <ol>
                                <li><em><span class="line-number">{{lines}}</span> lines of code</em></li>
                                <li><em><span class="traits">{{traits}}</span> traits mixed in</em></li>
                                {{#commits}}
                                <li>
                                    <strong>{{date}}</strong> - {{message}}
                                    <div class="code">{{{change}}}</div></li>
                                {{/commits}}
                            </ol>
                        </li>
                    {{/hotspots}}
                </ol>
            {{/repos}}
        </div>

原来我用xml短手关闭“bug-list”div并不好玩。我猜它假设我没有正确关闭它,所以模板div生活在bug列表中。因此,第一次渲染调用将覆盖模板,这将使第二次调用失败。

将第一行更改为

<div id="bug-list"></div>

有效

愚蠢的浏览器