Вызов усика дважды на одном элементе не удался? - PullRequest
2 голосов
/ 10 января 2012

У меня есть некоторый код, который устанавливает html () div в качестве результата вызова усов для определенного фрагмента JSON

    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));

И это вообще не работает.

Это похоже на то, что усы не хотят работать, если элемент, к которому они относятся, уже содержит контент

Есть ли способ обойти это?

1 Ответ

2 голосов
/ 10 января 2012

отработано

Это была разметка для страницы:

        <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>

Оказывается, закрытие div "bug-list" короткой рукой xml не очень хорошо. Я предполагаю, что это предполагало, что я не закрыл это должным образом, и поэтому шаблон div жил в списке ошибок. Поэтому при первом вызове рендеринга шаблон будет перезаписан, а второй вызов завершится ошибкой.

Изменив первую строку на

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

Сработало

Глупые браузеры

...