2014-10-31 3 views
1

Метеор, очевидно, предназначен для ультрасовременности. Но он не включает в себя какую-либо маршрутизацию страницы в своей конфигурации. Поэтому, если вы не можете использовать iron-router (из-за конфликта с каким-либо другим пакетом), значит ли это, что вы должны использовать Blaze.render() и шаблоны напрямую, чтобы изменить свои страницы?Метеор без маршрутизатора?

Я просмотрел документы об этом, и это просто не кажется ультра-простым, мягко говоря. Поэтому я надеюсь, что я что-то упустил. Как есть достаточно простой способ контролировать, какой шаблон отображается, не попадая во все объекты вида, которые нужно уничтожить, когда вы закончите с ними, а что - нет.

Кажется странным, что продукт, посвященный ультра-простоте, будет иметь такую ​​базовую функциональность, встроенную в объекты и функции, которые нетривиальны по сравнению с большей частью остальной части API. Но если они действительно ожидают, что новички будут использовать железо-роутер, почему бы не стать частью Meteor?

+0

из любопытства, какой пакет является железо: маршрутизатор конфликтует с? – stubailo

+0

Попробуйте воссоздать пример таблицы лидеров без использования каких-либо фреймворков, и вы увидите, как просто сделать это с помощью Meteor. –

+0

@stubailo - AmMaps (библиотека изображений AmCharts). Я могу добавить железо-маршрутизатор, и AmMaps все еще работает, но как только я добавлю хотя бы один вызов к объекту Router, он останавливается (без сообщений об ошибках). –

ответ

1

Заканчивать Template.dynamic: https://docs.meteor.com/#/full/template_dynamic

Это позволит вам включать в шаблон по имени, и передать имя от помощника.

Другой вариант заключается в использовании переменной Session вместо маршрутизации, а также иметь {{#if}} заявления:

{{#if firstPage}} 
    {{> firstPageTemplate}} 
{{else}} 
    {{> otherPageTemplate}} 
{{/if}} 
+0

Документы по этой функции Template.dynamic кажутся скудными и запутанными. В нем говорится, что вы можете определить templateName с помощью помощника, но означает ли это, что вы выполните: Template.dynamic.helpers() или вам нужно зарегистрировать глобальный помощник? Я надеюсь, что второй метод, который вы написали, работает, b/c он очень интуитивно понятен. Я видел это раньше, но я думал, что Блейз нарушил этот подход. Большое спасибо, stubailo! –

+0

Второй подход фактически используется во многих внутренних приложениях Meteor, которые были написаны до того, как была доступна какая-либо маршрутизация, поэтому она определенно по-прежнему работает! Что касается вспомогательной вещи, вы бы определили помощника либо глобально, либо на шаблоне, внутри которого вы вызываете Template.dynamic (Template.dynamic не ссылается на фактический шаблон, это как #if или #else, поскольку он построен на язык) – stubailo