Meteor - 为路由器获取数据时页面刷新导致闪烁
Meteor - Page refresh causes flicker when fetching data for router
如果我刷新一个在 iron-router 设置中使用数据查询的 meteor 页面,该页面会加载模板但没有数据,然后显示加载模板,然后显示包含数据的页面。我想避免正在发生的页面闪烁。这是我的路由器代码:
this.route('/stories/:_id', function () {
if (!Meteor.user() && !Meteor.loggingIn()) {
Router.go('home');
} else {
var story = Stories.findOne({ _id: this.params._id });
this.render('showStory', { data: story });
}
});
我也尝试过此设置并将登录验证移至 onBeforeAction。
this.route('showStory', {
path: '/stories/:_id',
data: function () {
return Stories.findOne({ _id: this.params._id });
}
});
当我使用此设置刷新页面时,我看到了 404 页面,然后是加载模板,然后是包含数据的正确模板。
试试这个。
Router.map(function () {
this.route('showStories', {
path: '/stories/:_id',
waitOn: function(){
return Meteor.subscribe("Stories"); //we make de subscription here
},
data: function(){
if(! Meteor.user()){
this.render('/') //or sign-up template whatever template you want if user its not loged in
}else{
return Stories.findOne({_id: this.params._id});
}
}
});
});
已经过测试并且可以正常工作
如果我刷新一个在 iron-router 设置中使用数据查询的 meteor 页面,该页面会加载模板但没有数据,然后显示加载模板,然后显示包含数据的页面。我想避免正在发生的页面闪烁。这是我的路由器代码:
this.route('/stories/:_id', function () {
if (!Meteor.user() && !Meteor.loggingIn()) {
Router.go('home');
} else {
var story = Stories.findOne({ _id: this.params._id });
this.render('showStory', { data: story });
}
});
我也尝试过此设置并将登录验证移至 onBeforeAction。
this.route('showStory', {
path: '/stories/:_id',
data: function () {
return Stories.findOne({ _id: this.params._id });
}
});
当我使用此设置刷新页面时,我看到了 404 页面,然后是加载模板,然后是包含数据的正确模板。
试试这个。
Router.map(function () {
this.route('showStories', {
path: '/stories/:_id',
waitOn: function(){
return Meteor.subscribe("Stories"); //we make de subscription here
},
data: function(){
if(! Meteor.user()){
this.render('/') //or sign-up template whatever template you want if user its not loged in
}else{
return Stories.findOne({_id: this.params._id});
}
}
});
});
已经过测试并且可以正常工作