Как установить заголовок шаблона Meteor при рендеринге?

У меня есть динамическая строка кода:

 <label>{{title}}</label>
//template name="header"

Я использую iron:router, приложение сейчас очень простое:

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

Router.route('/', {
  template: "home"
})

Router.route('/scientific', {
  template: "scientific"
})

Мне нужно решение, которое не полагается на Session как на способ динамического рендеринга {{title}}.

В идеале я хотел бы определить этот заголовок где-нибудь в моем коде маршрутизатора, и просто чтобы мой заголовок автоматически подбирал его. Я не особенно хочу делать много Session.set/get over в моих обратных вызовах Template.rendered (кажется, у меня возникла проблема с флажками Semantic-UI).

У вас есть какие-нибудь элегантные, супер простые решения?

PS: заголовок шаблона находится в шаблоне ApplicationLayout. ApplicationLayout имеет {{> yield}} под заголовком.


person ilrein    schedule 20.02.2015    source источник
comment
Он заслуживает отдельного пакета, пытались ли вы инкапсулировать все эти уродливые наборы сеансов в один простой в использовании пакет метеора?   -  person Filipe Borges    schedule 20.02.2015
comment
Звучит как отличная идея, за исключением того, что мне еще многое предстоит узнать о самом Meteor, прежде чем я начну рефакторинг в модульный код. Может быть, мне следует написать блог с более подробным кодом и получить отзывы от вас, волшебников Meteor, о качественном рефакторинге.   -  person ilrein    schedule 20.02.2015
comment
Я предположил, что вы также хотите изменить заголовок html › header. Для вашего простого случая ответ ниже достаточно хорош.   -  person Filipe Borges    schedule 20.02.2015


Ответы (1)


Жизнеспособным вариантом является сохранение вашего заголовка внутри параметров маршрута, например:

Router.route("/",{
  template:"home",
  title:"Welcome Home !"
});

Router.route("/scientific",{
  template:"scientific",
  title:"Scientific stuff"
});

Затем вы можете определить помощник заголовка в шаблоне заголовка на основе (реактивного) текущего контроллера маршрута.

Template.header.helpers({
  title:function(){
    return Router.current().route.options.title;
  }
});
person saimeunt    schedule 20.02.2015
comment
Вы знаете, это было элегантное решение, которое я хотел, но semantic-ui ВСЕ ЕЩЕ вызывает у меня проблемы. А я думал, что это просто сессия. Тем не менее, спасибо! - person ilrein; 20.02.2015
comment
Вы можете создать глобальный помощник, чтобы предоставить реактивный помощник title (или pageTitle) для шаблонов [1], и создать Deps.autorun для установки заголовка страницы браузера [2]. См.: [1] stackoverflow.com/questions /20681761/ и [2] stackoverflow. com/questions/14036248/. Вы также можете упаковать это в пакет. - person Filipe Borges; 20.02.2015
comment
Почему бы не использовать пакет: iron-router-title? - person dr.dimitru; 24.05.2015