Meteor - Template.created中的数据上下文?

时间:2014-12-23 01:11:27

标签: meteor

我正在使用共享日历应用。我有以下(简化)模板结构:

<template name="meeting">
    {{> calendar}}
</template>

<template name="calendar">
    {{#each days}}
        {{> day}}
    {{/each}}
</template>

<template name="day">
    etc etc
</template>

我有一个ReactiveVar用于每天的状态设置如下:

Template.day.created = function(){
  this.state = new ReactiveVar();

  this.autorun(_.bind(function() {
    var thisDate = Meetings.findOne(this.data._id).dates[this.data.dateString];
    s = ...various stuff...
    this.state.set(s);
  }, this));
}

路由设置如此(我使用自己的uuids而不是Mongo id用于公共网址):

Router.map(function () {
  this.route('home', {path: '/'});
  this.route('meeting', { 
    path: '/meeting/:uuid',
    template: 'meeting',
    data: function() {
      return Meetings.findOne({"uuid":this.params.uuid});
    }
  });
});

我理解的核心问题是Template.day.created没有数据上下文(还),所以我需要一种方法来传递会议的_id(或uuid)。提供这种背景的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以尝试这样做:

Router.map(function () {
  this.route('home', {path: '/'});
  this.route('meeting', { 
    path: '/meeting/:uuid',
    template: 'meeting',
    waitOn: function() {
      return Meteor.subscribe('Meetings');
    },
    data: function() {
      return Meetings.findOne({"uuid":this.params.uuid});
    }
  });
});