如何循环直接传递给dust.js的数组?

时间:2012-06-19 21:54:49

标签: javascript dust.js

使用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]

我可以命名我传入的每个数组,但是我正在努力避免这样做,因为数组实际上来自主干集合,这似乎是额外的工作。

2 个答案:

答案 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);
        });