Meteor: Jak wyzwolić reRun funkcji helpera po kolekcjiHandle.ready () jest prawdą

To nowa wersja mojego staregopytanie:

Dzięki pomocy Toma Colemana w końcu odkryłem, jak prawidłowo sprawdzić, czy abonament jest gotowy (), czy nie.

Moja obecna struktura kodu wygląda następująco:

/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'));
        });
});
// ...

Następnie przeglądam określone pliki .js i .html dla wszystkich elementów szablonu w folderze o nazwie:

/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;
        } 
}

Ten pomocnikdataLoaded owija zasadniczo wszystko w odpowiedni szablon i pokazuje zawartość, kiedydataLoaded zwraca true lub pokazuje ładowanie spinnera.

Problem polega na tym, że w wielu przypadkach nie działa, ponieważ ten kod dataLoaded jest uruchamiany tylko raz. Jeśli więc oba uchwyty NIE są gotowe () w czasie, gdy dataLoaded jest uruchomiona, zawartość NIGDY nie pojawi się. W tym przypadku nadal widzę wszystkie pliki console.log pochodzące z pliku app.js (rzeczy Deps.autorun ()), ale dziennik „Wszystkie załadowane dane!” nigdy nie jest echem.

Więc moje pytanie brzmi: jak mogę uruchomić ponowne uruchomienie tego kodu takdataLoaded jest uruchamiany ponownie, aby zawartość pojawiła się w końcu?

Z poważaniem

questionAnswers(4)

yourAnswerToTheQuestion