我正在使用共享日历应用。我有以下(简化)模板结构:
<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)。提供这种背景的正确方法是什么?
答案 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});
}
});
});