Det ser ud til, at du forstår problemet, lad os nu tage nogle mulige løsninger.
Meteor version 1.1
Hvis du bruger den nye meteor version 1.1 (du kan kontrollere, at meteor --version
kører )
brug dette.
Først på onCreated
funktion bruge denne.
Template.progressBar.onCreated(function () {
var self = this;
self.autorun(function () {
self.subscribe("Progress");
});
});
Se mere om subscriptionReady på DOCS.Nu på HTML brug sådan her.
<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 have noget som en waitOn:function(){}
på routeren
waitOn:function(){
Meteor.subscribe("Progress");
}
eller da hjælpere er asynkrone, gør noget som dette (kan ikke anbefales).
Template.progressBar.helpers({
curValue: function () {
query = Progress.findOne({user: Meteor.userId()}).curValue;
if(query != undefined){
return query;
}else{
console.log("collection isn't ready")
}
}
});