2015-04-24 2 views
1

У меня есть коллекция:Метеор JS: Как использовать Spacebars для отображения содержимого внутри массива, извлеченной из Метеор Коллекция

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

и у меня есть массив:

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

Я тогда вставить этот массив в коллекцию с помощью:

MenuItems.insert(arrayToInsert); 

Результирующий документ в моем MongoDB, как показано на RoboMongo является:

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

В моем шаблоне Helper у меня есть:

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

В моем .html файл я делаю это:

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

Но я только получаю этот выход:

[object Object] 

Как использовать Spacebars для итерации по этому массиву данных, чтобы я мог получить он должен отображать «Gemstone» и «Rings» ????

спасибо.

+1

попробовать {{это [1]}} –

+0

Привет, {{this [1]}} не работает .... {{this [0]}} также не работает .... – preston

+1

oops its {{this. [1]}} забыл, что результат представляет собой массив объектов –

ответ

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> 
+0

Итак, с его текущей формой вставки, например MenuItems.insert (arrayToInsert); нет способа отображения данных с помощью пробелов ??? Это действительно должно быть назначено на «ключ», как пример ура выше ??? Спасибо – preston

+1

Назначение массива ключу намного легче манипулировать, вам не придется иметь дело с синтаксисом 'this. [Index]'. – saimeunt