我想知道在使用dust.js 渲染页面时是否可以使用多个JSON。
例如,我在客户端。我下载了我的 JSON(JSON1 和 JSON2)和我的灰尘模板(dustTemplate)。我编译并加载我的模板。在我用 2 个 JSON 渲染我的页面之后。
现在我这样做:dust.render("template" , JSON, function(err, out) {...});
但它使用一个 JSON,有没有办法使用 2 个或更多 JSON?
谢谢
我想知道在使用dust.js 渲染页面时是否可以使用多个JSON。
例如,我在客户端。我下载了我的 JSON(JSON1 和 JSON2)和我的灰尘模板(dustTemplate)。我编译并加载我的模板。在我用 2 个 JSON 渲染我的页面之后。
现在我这样做:dust.render("template" , JSON, function(err, out) {...});
但它使用一个 JSON,有没有办法使用 2 个或更多 JSON?
谢谢
您绝对可以在单个页面上使用多个 JSON 有效负载(它们不需要同时到达)。每个有效负载都需要自己调用dust.render
,但如果您愿意,它们可能会使用相同的模板。
例如:
async('GET', url1, function(data) {
if (data) {
data = JSON.parse(data);
dust.render('template1', data, function(err, out) {
if (typeof out === 'string') {
container1.innerHTML = out;
}
});
}
});
async('GET', url2, function(data) {
if (data) {
data = JSON.parse(data);
dust.render('template2', data, function(err, out) {
if (typeof out === 'string') {
container2.innerHTML = out;
}
});
}
});
使用 2 个 JSON 或更多来呈现一页。我们可以将 JSON 与 jQuery 合并
var jsonMerge = $.extend({}, JSON1, JSON2);
var templateCompiled = dust.compile(dustTemplate, "template");
dust.loadSource(templateCompiled );
dust.render("template" , jsonMerge , function(err, out) {...});
@Mitch 指出的解决方案简单高效。不使用 jquery 的其他方法是http://jsfiddle.net/yXx5L/4/
用于将dust.makeBase
页面的 json 聚合到单个上下文堆栈中,灰尘可以在该堆栈上查找键。