Meteor - 页面刷新在获取路由器数据时会导致闪烁

时间:2015-01-25 01:52:44

标签: javascript meteor iron-router

如果我刷新在铁路由器设置中使用数据查询的流星页面,页面加载模板但没有数据,则显示加载模板,然后显示包含数据的页面。我想避免发生的页面闪烁。这是我的路由器代码:

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页面,然后是加载模板,然后是带有数据的正确模板。

1 个答案:

答案 0 :(得分:1)

试试这个。

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

已经过测试及其工作