Как я могу использовать два контроллера Iron Router в одном макете в Meteor 0.8.0?

В моем приложении Meteor у меня есть два блока yield: один для моей глобальной панели навигации, а другой для моего основного контента:

<template name="layout">

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

 </template>

Как я могу добавить Iron Router Controller в свои маршруты, чтобы я мог передавать данные в свою глобальную панель навигации (поскольку у нее нет маршрута)? Можно ли запустить два контроллера одновременно? Или я должен полагаться на помощников для глобальной навигации?


person Stu Stein    schedule 03.04.2014    source источник


Ответы (2)


Допустим, шаблон, который вы пытались отобразить в основном {{> yield}}, назывался home. Следующее будет работать.

Router.configure({
  layoutTemplate: 'layout'
});

Router.map(function () {
  this.route('home', {
    path: '/',
    template: 'home',
    yieldTemplates: {
      'navRegion': {
        to: 'navRegion'
      }
    }
  });
});
person AJ.    schedule 03.04.2014
comment
Спасибо @AJ., но как мне подключить один контроллер к моему глобальному navRegion, который будет управлять данными там, и подключить отдельный к моему домашнему шаблону, чтобы они оба работали одновременно? Это возможно? - person Stu Stein; 03.04.2014
comment
Если я правильно понимаю ваш вопрос, документация по железному маршрутизатору [Параметризованные маршруты] [1] должна позволить вам достичь того, что вы хотите сделать. Стандартный шаблон — это маршрут для каждого объекта в коллекции. Вы можете добиться этого с помощью параметризованного маршрута [1]: github.com/ EventedMind/ - person AJ.; 03.04.2014
comment
Я предполагаю, что я пытаюсь добиться наличия глобального контроллера для передачи глобальных данных в мою глобальную панель навигации, а затем маршрутных контроллеров, которые меняются с маршрутами для передачи данных, специфичных для маршрута. Таким образом, в любой момент у вас будет один глобальный контроллер и один контроллер для конкретного маршрута, работающие одновременно на одном и том же макете. Это проясняет? - person Stu Stein; 03.04.2014

Вот ответ @cmather, на который он ответил в моем другом посте: change-the-path">Как мне активировать маршрут Iron Router, не меняя путь?

Существует взаимно однозначное соответствие между маршрутом и контроллером маршрута. У вас всегда будет работать только один контроллер, в зависимости от маршрута, на котором вы находитесь. Если вы хотите установить глобальное значение из контроллера, и нет смысла делать это в глобальном контексте данных, вы всегда можете установить значение сеанса. Например: Session.set('currentId', this.params._id) - @cmather

person Stu Stein    schedule 04.04.2014