Meteor: Como disparar reRun da função auxiliar depois que collectionHandle.ready () é true

Esta é uma nova versão do meu antigoquestão:

Então, graças à ajuda de Tom Coleman, finalmente descobri como verificar corretamente se uma assinatura está pronta () ou não.

Minha estrutura de código atual se parece com isso:

/client/app.js:

eventsHandle = null;
groupsHandle = null;
// ...
// First Deps.autorun():
// Does not depend on any Session var, should just run every time
Deps.autorun(function() {
    eventsHandle = Meteor.subscribe("events", function() {
        console.log('Deps.autorun(): Events loaded');
    });
});

// Second Deps.autorun():
// contains all subscriptions which are dependent on my Session var "ehash"
Deps.autorun(function() {
    if(Session.get('ehash'))
        groupsHandle = Meteor.subscribe("groups", Session.get('ehash'), function() {
            console.log('Deps.autorun(): Groups loaded with ehash: ' + Session.get('ehash'));
        });
});
// ...

Então, eu vejo arquivos específicos de .js e .html para todo o material do template em uma pasta chamada:

/client/views/
--> <page>.js:

Template.x.dataLoaded = function() {
    if(Session.get('ehash'))
        if(eventsHandle && groupsHandle && eventsHandle.ready() && groupsHandle.ready()) {
            console.log('All data loaded!');
            singleevent = Events.find({ehash: Session.get('ehash')}).fetch()[0];
            return true;
        } 
}

Esse ajudantedataLoaded envolve basicamente tudo no modelo correspondente e mostra o conteúdo quandodataLoaded retorna true ou mostra um spinner de carregamento.

O problema é que, em muitos casos, isso não funciona porque esse código dataLoaded é executado apenas uma vez. Portanto, se as duas alças não estiverem prontas () no momento em que dataLoaded for executado, o conteúdo NUNCA aparecerá. Nesse caso, ainda vejo todos os arquivos do console.log provenientes do arquivo app.js (o material Deps.autorun ()), mas o log "Todos os dados carregados!" nunca é echod.

Então, minha pergunta é: como faço para acionar uma nova execução desse códigodataLoaded é executado novamente para que o conteúdo seja exibido?

Cumprimentos

questionAnswers(4)

yourAnswerToTheQuestion