我已自动发布。
Template.play.helpers ({
title: function () {
wcount = Workouts.find().count();
console.log(wcount);
}
});
这给了我0。
但如果我在浏览器的开发者控制台中。
Workouts.find().count()
24
我最近升级到0.8
如果我将waitOn添加到路由器,那么每次加载页面时都会出现此行为。
Router.map(function() {
this.route('splash', {path: '/'});
this.route('play', {
path: '/play',
template: 'play',
waitOn: function() {
return Meteor.subscribe('Workouts')
}
});
在@Christian Fritz的一些帮助之后,似乎我的问题是它没有等待我的订阅,如果帮助程序因为未定义而没有返回任何内容,那么当数据加载时它不会重新运行。 / p>
我现在已经关闭了自动发布。我的server / publications.js是:
Meteor.publish('workouts', function() {
return Workouts.find();
});
我的路由器是:
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading'
});
Router.map(function() {
this.route('splash', {path: '/'});
this.route('play', {
path: '/play',
template: 'play',
waitOn: function() {
return Meteor.subscribe('workouts')
}
});
});
in play.js
var workoutsSubcription = Meteor.subscribe('workouts');
console.log("workoutsSubscription.ready() is ",workoutsSubcription.ready());
返回: workoutsSubscription.ready()为false
一次或两次,然后当它满载为真时最终重新运行。但是,waitOn是否意味着它不会在数据存在之前运行该页面?
答案 0 :(得分:0)
你可能想要这样的东西:
var workoutsSubcription = Meteor.subscribe('workout_count');
Template.play.helpers ({
title: function () {
if(workoutsSubcription.ready()){
wcount = Workouts.find().count();
}
}
});
您还需要在服务器上发布订阅
Meteor.publish("workout_count", function () {
return Workouts.find();
});