2015-06-09 2 views
2

Как можно использовать Blaze.Each? Например, я хотел бы подражать этому:Метеор: Blaze.Каждый пример

{{#each Items}} 
    {{this}} 
{{/each}} 

в JS. Мне нужно поддерживать реактивность.

Что-то вроде:

Blaze.Each(Items.find(), function(item) { 
console.log(item); 
}); 

ответ

1

Я не получаю предыдущий ответ

Это

HTML

<template name="yourTemplate"> 
    <div id="each-area"> 
    </div> 
</template> 

Js

Template.yourTemplate.onRendered(function() { 
    var renderableContent = Blaze.Each(Collection.find({}), function(){ 
     return Template.templateToRender; 
    }); 
    Blaze.render(renderableContent, this.find("#each-area")); 
}); 

Является ли полный эквивалент этого:

HTML

<template name="yourTemplate"> 
    <div id="each-area"> 
     {{#each data}} 
      {{>templateToRender}} 
     {{/each}} 
    </div> 
</template> 

JS

Template.yourTemplate.helpers({ 
    "data": function(){ 
     return Collection.find({}) 
    } 
}); 
-1
this.autorun(function(){ 
    var items = Items.find(); 
    _.each(items.fetch(), function(item) { 
     console.log(item); 
    }); 
}); 

Это работает. Это console.logs каждый раз, когда Item добавляется.

без подчеркивания и автозапуск:

Blaze.Each(Data.find().fetch(), function(item){ 
    console.log(item) 
}) 
+0

это не будет реактивным, я думаю, что все дело в 'Blaze.Each '- иначе можно было бы использовать' _.each'/'.forEach' и т. д.! – offthegrass

+0

Использование автозапуска сделает его реактивным. Я не слишком уверен, почему вы хотите «вернуть console.log()», я обновил код, который регистрируется только. – kaoskeya

+0

ах, я попробовал «автозапуск», и это не сработало - что-то еще ломало его. Благодарю. Я оставлю вопрос открытым на несколько дней, потому что мне все еще любопытно, для чего нужен «Blaze.Each». – offthegrass

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