使用dust.js javascript模板引擎,我想直接传递一个数组:
var templateContents; //loaded by require.js
var compiled = dust.compile(templateContents, "viewElements");
dust.loadSource(compiled);
dust.render("viewElements", ["bob", "joe", "sue"], function(err, out){
$('#view').html(out);
});
如何创建模板文件以直接处理数组?我尝试过很多东西,包括:
{.}<br>
和
{#.}
{.}
{/.}
但似乎无法正确引用数组或其中的元素。第一个示例打印:[object Object]
我可以命名我传入的每个数组,但是我正在努力避免这样做,因为数组实际上来自主干集合,这似乎是额外的工作。
答案 0 :(得分:8)
我不确定我在原问题中尝试过的其中一件事究竟出了什么问题,但感谢Trevor指出这一点。
dust.render("viewElements", ["bob", "joe", "sue"], function(err, out){
$('#view').html(out);
});
这将适用于此:
{#.}{.}<br>{/.}
如果您有一系列对象:
dust.render("viewElements", [{name:"bob"}, {name:"joe"}, {name:"sue"}],
function(err, out){
$('#view').html(out);
});
您可以通过引用上的name属性来呈现它们。元素:
{#.}{.name}<br>{/.}
或直接:
{#.}{name}<br>{/.}
答案 1 :(得分:3)
这个答案可能太晚了:)
这段代码似乎对我有用(在渲染时将数组作为数据对象传递给模板):
var compiled = dust.compile("{#data}{.}<br>{/data}", "viewElements");
dust.loadSource(compiled);
var arr = ["bob", "joe", "sue"];
dust.render("viewElements", {"data" : arr}, function(err, out){
$('#content').html(out);
});