2015-04-17 2 views
1

Для моего приложения Я пытаюсь установить операцию для каждого элемента коллекции виджетов. Элемент виджета содержит url (апи-отдых) и period. Цель состоит в том, чтобы перебрать коллекцию виджетов и сделать что-то вроде этого:Выполнение определенных операций с элементами коллекции

//Loop through collection 

Meteor.setInterval(function(){ 
    Meteor.call('getData', <Collection>.url,function(e,r){ 
    if(e){ 
     console.error(e); 
    }else{ 
     //Display the data into the template 
    } 
    }); 
},<Collection>.period); 

В шаблоне я хотел бы сделать что-то вроде этого:

{{#each widgets}} 
    {{widgetItem}} 
{{/each}} 

я хотел бы знать, что лучший способ сделать это? Я слышал о шаблонах Dynamics с приложениями Telescope, но я не знаю, было бы полезно в моем случае.

ответ

0

{{#each}}Spacebars магия изменяет контекст данных элементов внутри него.

В принципе, если у вас есть следующие или аналогичную структуру данных для виджета:

{ 
    templateName : 'coolWidget1', 
    templateData : { ... } 
} 

Вы могли бы написать что-то вдоль линий:

{{#each Widgets}} 
    {{> Template.dynamic template=templateName data=templateData}} 
{{/each}} 

Где template= и data= являются объектом параметры, которые вы переходите на Template.dynamic (он будет производить { template : templateName, data : templateData}).
Тогда вы можете просто передать templateName и templateData благодаря {{#each}} изменения контекста данных (Spacebars понимаю, что вы имеете в виду «templateName и templateData текущего элемента цикла).

Так что было для HTML. Если вы хотите поделиться возвращенным значением с call с шаблоном, найти вопросы о Session или ReactiveVar, об этом уже много чего задали.