Meteor 使用iron路由器提供所有路线的数据

Meteor 使用iron路由器提供所有路线的数据,meteor,Meteor,我试图找到一种方法来发布应用程序中每个路由的数据。accounts-ui-bootstrap3包查找一个名为user_profile_picture的值,如果它在那里,它将在导航栏中显示一个化身图像。据我所知,为了让它工作,这些信息需要在iron路由器数据钩子中提供。现在如果我自己在每一条路线上都提供了这一功能,那么效果很好。但随着更多路线的增加,这会变得混乱和乏味,所以我希望能够在全球范围内提供这一价值 我试着在路由器的配置块(如下)中创建一个全局数据钩子,但我猜数据钩子只被控制器使用 Rou

我试图找到一种方法来发布应用程序中每个路由的数据。accounts-ui-bootstrap3包查找一个名为user_profile_picture的值,如果它在那里,它将在导航栏中显示一个化身图像。据我所知,为了让它工作,这些信息需要在iron路由器数据钩子中提供。现在如果我自己在每一条路线上都提供了这一功能,那么效果很好。但随着更多路线的增加,这会变得混乱和乏味,所以我希望能够在全球范围内提供这一价值

我试着在路由器的配置块(如下)中创建一个全局数据钩子,但我猜数据钩子只被控制器使用

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);