2015-07-08 2 views
1

Have коллекцияКак сделать foreach в Метеор с Монго?

Peoples = new Mongo.Collection('peoples'); 

    Peoples.insert({ 
     name: ["Mark", "John", "Kate"] 
    }); 

Я хочу, чтобы показать все имена в имени

<template name="pTable"> 
    <tr class="trJob"> 
    <td> 
     {{#each names}} 
      {{> peopleName}} 
     {{/each}} 
    </td> 
    </tr> 
</template> 

<template name="peopleName"> 
    <div>{{name}}</div> 
</template> 

Что в моих Temlate хелперов

Template.pTable.helpers({ 
    names: function(){ 
    return Posts.tags; 
    } 
}); 

Template.peopleName.helpers({ 
    name: function(){ 
    return Posts.tags.find(); 
    } 
}); 

Я знаю, что у меня есть ш *** код в моих помощниках Шаблонов, любая идея, как сделать это хорошо?

Он должен выглядеть (в DOM)

<td> 
    <div>Mark</div> 
    <div>John</div> 
    <div>Kate</div> 
</td> 
+0

вы хотите пройти через всех людей или только одного человека? или сообщения? –

+0

@ZeevG я хочу сделать в 3 div's, в одном div 1 имя. Soo в DOM он должен выглядеть следующим образом тда сНа Марк DIV Джона Дива Кейт – NlHell

ответ

1

простой пример массива

Template.home.helpers({ 
    names: function(){ 
    return [1,2,3]; 
    } 
}); 

<template name="home"> 
     {{#each names}} 
     {{this}} 
     {{/each}} 
</template> 

напечатает:

каждый элемент становится «этим» внутри каждого цикла. если вы вызовете другой шаблон в цикле, то его «это» будет заселено по элементу

+0

проверить это: http://stackoverflow.com/questions/31282522/how-do-i-iterate-over-an-array-of-strings-with-the-meteor-spacebars-each-bl –

1

Поскольку у вас есть разные имена для своей коллекции, я буду придерживаться с первым Peoples

Вот как я бы проследовать с помощниками:

Template.pTable.helpers({ 
    names: function(){ 
    return People.find({_id:yourId},{fields:{name:1}}).fetch(); 
    } 
}); 

И ваш peopleName шаблон будет выглядеть так:

<template name="peopleName"> 
    <div>{{this}}</div> 
</template> 

Если вам нужно, чтобы получить все имена всех ваших документов, мне нужно, чтобы гнездиться ваш {{#each names}} в другой {{#each doc}} где doc помощник, как это (обновлено names а):

Template.pTable.helpers({ 
    doc: function(){ 
     return People.find().fetch(); 
     }, 
    names: function(){ 
      return People.find({_id:this.id},{fields:{name:1}}).fetch(); 
    }); 
+0

Выглядит хорошо, но ваш пример не работает, я написал, как вы – NlHell

+0

я обновил его, чтобы добавить '.fetch()' после 'коллекции. найти() '. Теперь он возвращает массив документов вместо курсора. Теперь он должен работать. – Billybobbonnet

Смежные вопросы