【问题标题】:How can I use two Iron Router controllers in one layout in Meteor 0.8.0?如何在 Meteor 0.8.0 的一个布局中使用两个 Iron Router 控制器?
【发布时间】:2014-04-03 02:58:03
【问题描述】:

在我的 Meteor 应用程序中,我有两个收益块:一个用于我的全局导航栏,另一个用于我的主要内容:

<template name="layout">

  <div>
    {{> yield region='navRegion'}}
  </div>
  <div>
    {{> yield}}  
  </div>

 </template>

如何将 Iron 路由器控制器添加到我的路由中,以便我可以将数据传递到我的全局导航栏(因为它没有路由)?是否可以同时运行两个控制器?还是我必须依赖助手来进行全球导航?

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    假设您尝试在主 {{&gt; yield}} 中呈现的模板名为 home。以下将起作用。

    Router.configure({
      layoutTemplate: 'layout'
    });
    
    Router.map(function () {
      this.route('home', {
        path: '/',
        template: 'home',
        yieldTemplates: {
          'navRegion': {
            to: 'navRegion'
          }
        }
      });
    });
    

    【讨论】:

    • 谢谢@AJ.,但是我如何将一个控制器连接到我的全局 navRegion 来控制那里的数据,并将一个单独的控制器连接到我的主模板,并让它们同时运行?这可能吗?
    • 如果我正确理解了您的问题,[参数化路由][1] 上的铁路由器文档应该可以让您实现您想要做的事情。 “标准模式是集合中每个对象的路由。您可以使用参数化路由来实现这一点”[1]:github.com/EventedMind/…
    • 我想我想要实现的是拥有一个全局控制器来将全局数据传递到我的全局导航栏,然后路由控制器会随着路由而改变以传递特定于路由的数据。所以在任何时候,你都会有一个全局控制器和一个特定于路由的控制器同时在同一个布局上工作。这说明清楚了吗?
    【解决方案2】:

    这是@cmather 的回答,他在我的另一篇帖子中回答了这个问题: How do I activate an Iron Router route without changing the path?

    路由和路由控制器是一对一的。你会 根据路由,一次只能运行一个控制器 轮到你了。如果要从控制器设置全局值,并且它 在全局数据上下文中这样做没有意义,你总是可以 设置会话值。例如:Session.set('currentId', this.params._id) - @cmather

    【讨论】:

      猜你喜欢
      • 2014-05-07
      • 2013-11-23
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      • 2015-06-23
      相关资源
      最近更新 更多