数据上下文为null,在集合准备好之前加载模板

时间:2015-03-11 18:41:40

标签: meteor

Router.route('/form/:_id', function () {

      this.render('viewForm', {
        data: function () {
          return forms.findOne({id: this.params._id});
        },
      waitOn:function(){
         return Meteor.subscribe("forms").ready();
        }
      });
    }
    ,
     {name:"forms.show",
      layoutTemplate: 'generalLayout'

      });

当我打开新私人窗口上的链接时,数据上下文为空。 这是我的模板经理方

    Meteor.subscribe("forms");
Template.viewForm.rendered = function(){
    console.log("calling view form");
    currentForm = this.data;
    console.log("form id",currentForm.id);

}

当我重新加载页面时,会检索到数据。

这是我的旋转包加载模板

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

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

1 个答案:

答案 0 :(得分:1)

使用waitOn函数将订阅方法更改为路由,就像这样,只是为了确保template等待收集准备就绪

waitOn:function(){
 return Meteor.subscribe("forms");
}

另外,请不要忘记loading template使用waitOn功能。

 Router.configure({
 loadingTemplate: 'loadingTemplate',
 layoutTemplate: 'generalLayout',
 waitOn:function(){
     return Meteor.subscribe("forms");
    }
});