2016-04-10 5 views
0

У меня есть HomeLayout.html вроде этого:Метеор Iron.Router динамический шаблон

<template name="HomeLayout"> 
    <main> 
    {{>Template.dynamic template=main}} 
    </main> 
</template> 

И в LoginLayout.html вроде этого:

<template name="LoginLayout"> 
    <main> 
    <p> Login Layout Test </p> 
    </main> 
</template> 

Я пытаюсь ввести этот LoginLayout внутри HomeLayout , Для запуска HomeLayout я использую этот код:

Router.route('/', function() { 
    this.render('HomeLayout'); 
}); 

Но я не знаю, как я могу загрузить этот LoginLayout внутри HomeLayout ...

ответ

1

Просто определить помощник, который возвращает шаблон, который вы хотите, чтобы динамически вставить:

Template.HomeLayout.helpers({ 
    main: function(){ 
    return "LoginLayout"; 
    } 
}); 

Где у вас есть {{>Template.dynamic template=main}} выше помощник будет оценивать main как помощника и возвращает макет, который вы ищете.

Я не знаю, что ваши <main></main> теги выполняют.

+0

Не работает ли железный маршрутизатор с {{> yield}} и использует текущее имя маршрута для поиска соответствующего шаблона? –

+0

@JanJoukeTjalsma да, но динамические шаблоны обычно не контролируются i-r, они контролируются тем, что предоставляет переменную, переданную динамическому шаблону. Динамические шаблоны обеспечивают дополнительный уровень контроля над '{{> yields}}' и полезны, когда вы, например, хотите делиться картами событий между шаблонами. –