铁路由器:如何将数据发送到布局?

时间:2015-02-09 09:55:12

标签: meteor iron-router

使用Iron Router,我了解如何为模板设置数据。但是,如何将数据发送到全局定义的布局?

我通过以下方式设置路由器布局:

Router.configure({ layoutTemplate: 'NAME' })

这将设置我所有路线的布局。

但是,从我的个别路线来看,我想将数据发送到布局模板。

2 个答案:

答案 0 :(得分:3)

布局使用路由选项中使用data定义的数据上下文。以下是Iron Router documentation的摘录:

Router.route('/routeName', {
  ...

  // A data function that can be used to automatically set the data context for
  // our layout. This function can also be used by hooks and plugins. For
  // example, the "dataNotFound" plugin calls this function to see if it
  // returns a null value, and if so, renders the not found template.
  data: function () {
    return Posts.findOne({_id: this.params._id});
  },

  ...
}

我们还可以使用this.layout设置布局的数据上下文,如下所示:

Router.route('/routeName', function () {
  this.layout('layoutName', {
    data: function() {
      return CollectionName.find();
    }
  });
});

此外,我们可以参考现有的layoutTemplate选项,如下所示:

Router.route('/routeName', function () {
  this.layout(this.lookupOption('layoutTemplate'), {
    data: function() {
      return CollectionName.find();
    }
  });
});

答案 1 :(得分:1)

Router.configure({
    layoutTemplate: 'NAME',
    data: function() {
        return CollectionName.find();
    }
});

如铁中的Global Default Options所述:路由器文档:

  

您可以在路由器本身设置上述任何选项......

以上选项'是指Route Specific Options

中的任何一个

您还可以subscribe发布的收藏集:

Router.configure({
    layoutTemplate: 'NAME',
    subscriptions: function() {
        this.subscribe('CollectionName');
    }
});