通过骨干/下划线模板中的任意json迭代

spa*_*man 0 json template-engine backbone.js underscore.js

在正常情况下,您通过密钥获取值,即使用<%= name%>获取name的值,您必须知道密钥是"name".我的问题是,如果您首先不知道json字段的键,您如何遍历它们,例如,将所有键值对转储到表中?

nik*_*shr 5

您可以将对象转换为具有键和值作为属性的对象数组.例如,

var obj = {one: 1, two: 2, three: 3};

var fields = _.map(
    _.pairs(obj),
    function(pair) {
        return {
            key: pair[0],
            value: pair[1]
        };
    }
);
Run Code Online (Sandbox Code Playgroud)

会屈服 [{key: "one", value: 1}, {key: "two", value: 2}, {key: "three", value: 3}]

然后,您可以将此数组提供给模板,例如

var template = _.template(
    '<% _(list).each(function(field) { %>'+
        '<%= field.key %> : <%= field.value %><br>'+
    '<% }); %>'
);
$('body').append(template({
    list: fields
}));
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/nikoshr/kvxuN/一起玩的小提琴