使用jQuery模板呈现JSON

时间:2011-11-12 12:41:56

标签: javascript jquery json jquery-templates

我已经尝试了几天使用jQuery模板来解决一些JSON渲染但没有成功...我希望有人比我更聪明可以发现我出错的地方。

所以我的JSON数据返回类似于此的内容:

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

然后我尝试使用jQuery模板呈现JSON返回的每个项目:

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}的数据。我没有收到任何错误或未定义的消息,但我不知道我哪里出错?非常感谢任何帮助!

更新

好的,为了避免使用弃用的方法或其他脚本/插件,这是一种更好的方法吗?

$.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 :(得分:0)

根据我对已弃用模板插件的有限了解,它不会选择 content 属性,因为它不是JSON对象集合中每个对象的顶级属性。我认为你的模板应该是这样的:

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

答案 1 :(得分:0)

您是否已加入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 ...?