4

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

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

4

2 回答 2

10

我不确定我在原始问题中尝试的其中一件事到底出了什么问题,但感谢 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>{/.}
于 2012-08-15T21:11:09.190 回答
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);
        });
于 2012-08-14T01:25:04.847 回答