Использование шаблона jQuery для рендеринга JSON - PullRequest
2 голосов
/ 12 ноября 2011

Я несколько дней пытался немного разобраться с рендерингом JSON с использованием шаблонов jQuery, но безуспешно ... Я надеялся, что кто-то более умный, чем я, сможет определить, где я ошибаюсь.

Итак, мои данные JSON возвращают что-то похожее на это:

[{"pk": 1, "model": "blobs.blob", "fields": {"content": "hello"}}, {"pk": 2, "model": "blobs.blob", "fields": {"content": "goodbye"}}];

Затем я пытаюсь отобразить каждый элемент, возвращаемый JSON, с помощью шаблонов jQuery:

var blob_template = '<p>${content}</p>';

$.template('blobTemplate', blob_template );

$.getJSON('/myurl/', function(data) {

    $('blobTemplate').empty();

    var blobs = data;

    $.tmpl('blobTemplate', blobs)
        .appendTo('div');
});

Шаблон отображается нормально, но без данных из $ {content}. Я не получаю сообщение об ошибке или неопределенное сообщение, но я не знаю, где я иду не так? Буду очень признателен за любую помощь!

UPDATE:

Хорошо, поэтому, чтобы избежать использования устаревшего метода или дополнительных скриптов / плагинов, это лучший подход вместо этого?

$.getJSON('/myurl/', function(data) {
    var blobs = [];

    $.each(data, function(i, data) {
        var blob_template = '<p>' + data[i].fields.content + '</p>';

        blobs.push(blob_template);
    });

    $(notes.join('')).appendTo('div');
});

Кажется, это приводит к тому, что данные [i] не определены: (

Ответы [ 2 ]

0 голосов
/ 12 ноября 2011

Вы включили https://raw.github.com/jquery/jquery-tmpl/master/jquery.tmpl.min.js?(потому что jQuery.template является бета-версией)

Что вы там делаете $('blobTemplate').empty();?Я не думаю, что у вас есть тег blobTemplate

, который вы заменяете ${content} на data[i].content, но поле вашего контента находится в data[i].fields.content ...?

0 голосов
/ 12 ноября 2011

Из моих ограниченных знаний о плагине устаревших шаблонов он не получает свойство content , потому что это не свойство верхнего уровня каждого объекта в вашей коллекции объектов JSON.Я думаю, что ваш шаблон должен выглядеть так:

<p>
    {{each fields}}
        ${$value}
    {{/each}}
</p>
...