Det verkar som om du förstår problemet, låt oss nu gå vidare till några möjliga lösningar.
Meteor version 1.1
Om du använder den nya meteor version 1.1 (du kan kontrollera att meteor --version
körs )
använd detta.
Först på onCreated
funktion använd denna.
Template.progressBar.onCreated(function () {
var self = this;
self.autorun(function () {
self.subscribe("Progress");
});
});
Se mer om prenumerationReady på DOCS.Nu på HTML använd så här.
<template name="progress">
{{#if Template.subscriptionsReady}}
<div id="progress-bar" style="width:{{curValue}}; background-color:*dynamicColor*;"></div>
{{else}}
{{> spinner}} <!-- or whatever you have to put on the loading -->
{{/if}}
</template>
Meteor under 1.0.4
Du kan ha något i stil med en waitOn:function(){}
på routern
waitOn:function(){
Meteor.subscribe("Progress");
}
eller eftersom hjälpare är asynkrona gör något sånt här (rekommenderas inte).
Template.progressBar.helpers({
curValue: function () {
query = Progress.findOne({user: Meteor.userId()}).curValue;
if(query != undefined){
return query;
}else{
console.log("collection isn't ready")
}
}
});