如何在Ember模板中渲染Map数据结构?

时间:2016-11-17 12:22:33

标签: ember.js

我使用Ember 2.8。 Ember中存在Map data structure。它应该是可迭代的。但是,没有例子如何枚举并渲染它。

假设我的地图中的键和值都是设置了“名称”的JS对象,我在Emblem中尝试过:

each myMap.keys as |key|
  p = key.name

each myMap.values as |value|
  p = value.name

/ each myMap as |key, value|    //this one causes build error
/   p = key.name
/   p = value.name

这些语法似乎都不起作用,并且渲染的内容不仅仅是“未定义”的空白空间。

你们中的任何人都知道如何在Ember中渲染地图吗?

2 个答案:

答案 0 :(得分:1)

事实证明,使用本机JS Map就足够了。

我的地图最终使用了对Object: Array[Object]

在Emblem模板中:

each myMap as |value key| // <--- notice the order!
  p {{key.name}}
  p {{key.date}}
  each value as |item| // values from map are arrays so I enumerate through them as well
    p {{item.name}}
    p {{item.details}}

在控制器中:

myMap: function() {
  var myMap = new Map();    
  myMap.set(
    {name: 'keyname', date: 'keydate'}, 
    [{name: 'itemname', details: 'itemdetails'}, {name: 'itemname2', etails: 'itemdetails2'}]
  );

  // ... etc set more pairs

  return myMap;
}.property();

答案 1 :(得分:0)

您是否正在寻找像each-in帮手那样的东西?

用法:

{{#each-in obj as |key value|}}
  {{key}}:{{value}}<br>
{{/each-in}}

看看这个sample demo