使用 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
});