Meteor 使用iron路由器提供所有路线的数据
我试图找到一种方法来发布应用程序中每个路由的数据。accounts-ui-bootstrap3包查找一个名为user_profile_picture的值,如果它在那里,它将在导航栏中显示一个化身图像。据我所知,为了让它工作,这些信息需要在iron路由器数据钩子中提供。现在如果我自己在每一条路线上都提供了这一功能,那么效果很好。但随着更多路线的增加,这会变得混乱和乏味,所以我希望能够在全球范围内提供这一价值 我试着在路由器的配置块(如下)中创建一个全局数据钩子,但我猜数据钩子只被控制器使用Meteor 使用iron路由器提供所有路线的数据,meteor,Meteor,我试图找到一种方法来发布应用程序中每个路由的数据。accounts-ui-bootstrap3包查找一个名为user_profile_picture的值,如果它在那里,它将在导航栏中显示一个化身图像。据我所知,为了让它工作,这些信息需要在iron路由器数据钩子中提供。现在如果我自己在每一条路线上都提供了这一功能,那么效果很好。但随着更多路线的增加,这会变得混乱和乏味,所以我希望能够在全球范围内提供这一价值 我试着在路由器的配置块(如下)中创建一个全局数据钩子,但我猜数据钩子只被控制器使用 Rou
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading',
notFoundTemplate: 'not_found',
waitOn: function() {
return [
subs.subscribe('notifications'),
subs.subscribe('currentUser', {
"_id": true,
"email_hash": true,
"user_profile_picture": true,
"profile": true
})
];
},
data: function() {
return {
user_profile_picture: Meteor.user().user_profile_picture
};
}
});
我还尝试在onAfterAction和onBeforeAction钩子中设置数据,但我认为这个.data()是只读的。。。或者它至少在我尝试时没有添加属性。我也试过了
this.data().user_profile_picture = Meteor.user().user_profile_picture;
及
但这些也不起作用。我不确定是否有可能像那样更改数据,或者我只是做得不正确
我搜索了那里的文档,其中提到了getData()和setData()方法,但文档一定是过时的,因为它们已经被删除了
有什么办法吗?感谢您的帮助
谢谢。这里可能完全不正确,但是请看一下这个问题,您需要将用户配置文件图片添加到发布的字段列表中,然后我认为您可以在任何模板中使用用户{{currentUser.user\u profile\u picture}。或者,无论哪个模板显示头像图像,都可以为该模板创建一个助手,它将在该模板内工作,而不管路由如何。您可能还应该在应用程序启动时订阅通知,而不是在每个路由上重新订阅。我现在发布了配置文件图像。如果我在Chrome控制台中查看集合,信息就在那里。我尝试在我的主/根布局页面中创建一个名为user\u profile\u picture的模板帮助器,它只返回URL,但包的模板似乎无法识别它。它试图使用{{{with user_profile_picture}}助手来访问它,所以我不确定这是否与它有关。我使用的是SubscriptionManager,所以据我所知,订阅不会在每次路由更改时都进行。不管怎样,我都会调查的,只是为了确定一下。
var data = this.data();
data.user_profile_picture = Meteor.user().user_profile_picture;
this.data(data);