是否可以在下划线模板中迭代顶级数组?

时间:2015-09-27 20:39:27

标签: javascript underscore.js underscore.js-templating

如果我使用像

这样的对象提供下划线模板
{
    key1: value1,
    key2: [value20, value21, ...]
}

然后在模板中我可以使用_.each(key2, function())迭代它。

但是,如果它是顶级的,那么我可以遍历数组

[
    val1,
    val2,
    ...
]

可能类似于_.each(this, function())

2 个答案:

答案 0 :(得分:0)

您似乎正在寻找_.values

var data = {
    key1: "value1",
    key2: ["value20","value21"]
};

console.log(_.values(data));
//["value1", ["value20", "value21"]]

然后你可以用_.each来迭代列表

答案 1 :(得分:0)

是。默认情况下,传递给模板的对象名为objlodash另外允许使用传入的variable参数的options属性重命名;我不相信下划线支持这一点。

从REPL展示:

> require('underscore').template('<%= obj.length %>')([ 'a', 'b', 'c' ]);
'3'
> require('underscore').template('<%= foo.length %>', { variable: 'foo' })([ 'a', 'b', 'c' ]);
ReferenceError: foo is not defined
> require('lodash').template('<%= foo.length %>', { variable: 'foo' })([ 'a', 'b', 'c' ]);
'3'

我的来源是lodash docs;我浏览了underscore docs并且没有看到对此的引用,因此它可能是下划线中不受支持的功能。