Meteor JS:如何使用Spacebars显示从Meteor Collection中检索到的数组内的内容

时间:2015-04-24 12:51:43

标签: javascript mongodb meteor spacebars

我有一个集合:

MenuItems = new Mongo.Collection('menu_items');

我也有一个数组:

var arrayToInsert = ['Gemstone', 'Rings'];

然后我通过以下方法将此数组插入到集合中:

MenuItems.insert(arrayToInsert);

RoboMongo中显示的mongodb内的结果文档是:

{
    "_id" : "yRXmFGxLCZXLf9Ynh",
    "0" : "Gemstone",
    "1" : "Rings"
}

在我的模板助手中,我有:

menuItems: function(){
    return MenuItems.find();
  },

在我的.html文件中,我这样做:

{{#each menuItems}}
  {{this}}
{{/each}}

但我只得到这个输出:

[object Object]

如何使用Spacebars迭代这些数据,以便我可以显示'Gemstone'和'Rings'????

非常感谢。

1 个答案:

答案 0 :(得分:3)

如果希望数组表示菜单项值,则应将它们插入到集合中,如下所示:

arrayToInsert.forEach(function(menuItem){
  MenuItems.insert({
    label: menuItem
  });
});

然后您可以在模板中显示菜单项:

JS

Template.menu.helpers(function(){
  menuItems: function(){
    return MenuItems.find();
  }
});

HTML

<template name="menu">
  <ul>
    {{#each menuItems}}
      <li>{{label}}</li>
    {{/each}}
  </ul>
</template>

如果要将数组存储为集合文档的一部分,请使用以下代码:

JS

MenuItems.insert({
  items:arrayToInsert
});

HTML

<template name="menu">
  {{#each menuItems}}
    <ul>
      {{#each items}}
        <li>{{this}}</li>
      {{/each}}
    </ul>
  {{/each}}
</template>