我有一个小型的流星应用程序与铁路由器。这是我的routes.js,可供客户端和服务器使用:
Router.configure({
layoutTemplate: 'defaultLayout',
loadingTemplate: 'loading'
});
// Map individual routes
Router.map(function() {
this.route('comicCreate', {
path: '/comic/create'
});
this.route('comicDetails', {
onBeforeAction: function () {
window.scrollTo(0, 0);
},
path: '/comic/:_id',
layoutTemplate: 'youtubeLayout',
data: function() { return Comics.findOne(this.params._id); }
});
this.route('frontPage', {
path: '/',
layoutTemplate: 'frontPageLayout'
});
this.route('notFound', {
path: '*',
where: 'server',
action: function() {
this.response.statusCode = 404;
this.response.end('Not Found!');
}
});
});
我需要将我的漫画集合文档中的一些字段提供给包装Youtube的IFrame API的包,我通过渲染的函数执行此操作:
Template.comicDetails.rendered = function() {
var yt = new YTBackground();
if (this.data)
{
yt.startPlayer(document.getElementById('wrap'), {
videoIds: this.data.youtubeIds,
muteButtonClass: 'volume-mute',
volumeDownButtonClass: 'volume-down',
volumeUpButtonClass: 'volume-up'
});
}
};
当我开始转到localhost:3000 /然后点击设置为“{{pathFor' comicDetails'_id}}”的链接时,这非常有用。但是,如果我直接转到localhost:3000 / comic / somevalidid,它不会,尽管这两条路线最终都指向同一个网址。
原因似乎是当我直接进入深层链接时,在执行渲染函数期间未定义“this.data”。模板本身显示正常(数据正确地替换了模板中的空格键{{field}}标签),但是当渲染的回调触发时,数据的“this”上下文中没有任何内容。
我在这里做错了吗?
答案 0 :(得分:0)
尝试在Meteor.startup中声明路线......不确定这是否是问题,但值得一试