0

我目前正在使用 QuickBase 数据库尝试使用 moustache.js 制作自定义报告,当我查看 moustach.js 时,我注意到您需要以 JSON 格式保存数据,因此我使用了(http://pastie.org/ 9364908#16)将我的数据转换为 JSON,然后输出为(http://pastie.org/9364674#18

我的问题是,当我为此制作模板时,它是否需要全部包含在调用获取 json 数据的页面中?我查看了 mustache 模板的示例,但我能找到的只是它与提供的数据一起使用,然后以 JSON 格式制作,但我需要的数据是在我拨打电话时提供的,所以我将如何设置它.?

4

1 回答 1

0

使用 mustache js 模板(或一般的 js 模板)时,您不需要让模板与从 ajax 调用返回的数据位于同一位置。但是,您需要将数据存储在模板渲染函数范围内的 var 中。我假设您希望在一组数据中进行 ajax,将其解析为 JSON,然后在某个时候将该 JSON 数据呈现给 DOM。所以回答你的问题:

1)模板是否需要包含在JSON数据所在的页面中?不一定,但您需要能够从一个位置访问这两个部分(即,您将在模板和数据中都使用 ajax,然后将它们放在一起。或者,您可以将模板作为脚本存储在 DOM 中 [推荐的方式,除非您使用 AMD],然后在您的 ajax 调用完成时呈现模板)。

需要注意的主要一点是,您需要在同一范围内引用您的模板和数据。

2)设置模板/数据?

这可以通过使用 ajax 成功回调来完成:https ://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

因此,成功后,您可以在模板上渲染函数调用,或者只需使用数据设置一个本地范围的变量并在之后处理模板渲染。

3) 正常渲染模板

var template = $('#template').html(), //script tage with id="template" from your dom
    data = jsonData, //saved somewhere in a local scoped var .. maybe from an ajax call
    rendered = Mustache.render(template, data),
    target = $("#target"); //where the template renders to

$('#target').html(rendered);

4) 通过 $.ajax 渲染模板

$.ajax("/api/data", function(data){
    var jsonData = $.parseJSON(data),
        template = $('#template').html(), //script tage with id="template" from your dom
        rendered = Mustache.render(template, jsonData),
        target = $("#target"); //where the template renders to

});
于 2014-07-07T19:13:56.483 回答