如何使用动态密钥名

时间:2015-07-22 20:56:13

标签: mustache

我有一个具有以下结构的对象

{
  id1: {
    name: 'name1',
    value: 'value1'
  },
  id2: {
    name: 'name2',
    value: 'value2'
  },
  ...
}

因为键值是嵌套对象的id并且它是动态生成的,所以我不能使用嵌套块的点符号,如:

{{#item}}
  {{id.value}}
  {{id.name}}
{{/item}}

{{#item}}
  {{#id}}
    {{value}}
    {{name}}
  {{/id}}
{{/item}}

如何编写代表这些嵌套对象的模板?

1 个答案:

答案 0 :(得分:0)

最好将这种类型的动态json转换为数组,同时保留动态键,如果我们想在模板中显示它(将这些动态键id1, id2, id3存储在固定键中,如id

var obj = {
  id1: {
    name: 'name1',
    value: 'value1'
  },
  id2: {
    name: 'name2',
    value: 'value2'
  },

  id3: {
    name: 'name3',
    value: 'value3'
  }
};

var arr=[];
for(var i in obj ){
    var o = obj[i];
    //if you want to preserve ids
    o.id = i;
    arr.push(obj[i]);
} 

在胡子模板中,我们可以像这样使用它。

{{#arr}}
    {{name}}
    {{value}}
    {{id}}
 {{/arr}}