2015-01-17 2 views
0

Я хочу использовать свою коллекцию игроков в помощнике ... по нескольким причинам, я бы хотел, чтобы эта коллекция не была реактивной. Я хотел бы просто первый вызов базы данных для отображения коллекции. Я попытался использовать refrevedates: false, но в этом случае коллекция остается пустой после загрузки и ничего не отображается.Самый лаконичный и элегантный способ разбить реактивность помощников в метеор

Template.myGame.helpers({ 
     players: function() { 
     return Players.find({}, {reactive: false}); 
     } 
    }) 


<ul> 
    {{#each players}} 
    {{> player}} 
    {{/each}} 
</ul> 

ответ

0

Вы эффективно ищете способ возврата данных неактивно, но только после его готовности. Это может быть достигнуто с помощью дескриптора подписки (при условии, что вы удалили «autopublish»).

playersSub = Meteor.subscribe('players', ...); 

Template.myGame.helpers({ 
    players: function() { 
    if (playersSub.ready()) { 
     return Players.find({}, {reactive: false}); 
    } else { 
     return []; 
    } 
    } 
}); 

NB - это на самом деле можно получить по подписке готовности (не реактивно) без ручки, с помощью Players._connection._subscriptions.[SUB_ID].ready, но я бы не рекомендовал это, поскольку это не является частью общественного API.

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