Meteor:在发布中使用Meteor._sleepForMs()时,Iron路由器未显示加载模板

时间:2015-08-26 15:54:08

标签: javascript templates meteor iron-router

我对Meteor很新,并且在“waitOn”功能期间出现铁路由器没有显示我的加载模板的问题。

我正在使用Meteor._sleepForMs(2000)来模拟页面发布中的网络延迟。延迟很明显,但我只是得到一个空白的模板,直到页面加载。我的印象是加载模板会显示,直到'waitOn'完成(但这可能不正确?)。

我的加载模板(在我直接在页面上调用模板{{> loading}}时显示正常):

<template name="loading">
   {{> spinner}}
</template>

我的路由器代码:

Router.configure({
  layoutTemplate: 'layout',
  loadingTemplate: 'loading'
});


Router.route('/editor/:_id',{
//route template
  name: 'editorProfile',
  //subscription to userProfile publication of editor
  waitOn: function(){
    Meteor.subscribe('userProfile',this.params._id);
  },
  //data context is the user
  data: function(){
    return Meteor.users.findOne(this.params._id);
  }
});

和我的'userProfile'出版物:

Meteor.publish('userProfile', function(_id){

  Meteor._sleepForMs(2000);//simulate network lag

  //find the user by id
  var user=Meteor.users.findOne(_id);

  //if not found, mark subscription ready and quit
  if (!user){
    this.ready();
    return;
  }
  //if user is the currently logged in user
  if (this.userId==user._id){
    //return the full user document
    return Meteor.users.find(this.userId);
  }
  //if viewing another user
  else {
    //only return the user's profile
    return Meteor.users.find({'_id': user._id}, 
        {fields: {
            profile: 1
        }
    });
  }
});

0 个答案:

没有答案