2015-03-05 3 views
0

Я использую Meteor для создания веб-приложения. Я определил мой макет:Метеор: вставить шаблон между другими шаблонами и данными переноса между шаблонами

<template name="default_layout"> 
    {{> header}} 
    body code here 
    {{> footer}} 
</template> 

А вот мой файл маршрутизации:

Router.configure({ layoutTemplate: 'default_layout' 
}); 
Router.map(function() { this.route('post_list', {path: '/'}); 
}); 

Зв У меня есть два вопроса:

  1. Как сделать шаблон post_list идти в код тела default_layout шаблона?
  2. Основание для каждого макета для отображения страницы, возможно, содержимого заголовка и нижнего колонтитула соответственно. Итак, как связаться с шаблоном? Например, post_list шаблон будет установить какое-то значение для header шаблона ...

Спасибо :)

ответ

2
  1. Используйте {{> выход}} хелпер. Это будет вставлять любой шаблон, на котором работает ваш маршрут. Так.

    <template name="default_layout"> 
        {{> header}} 
        {{> yield}} 
        {{> footer}} 
    </template> 
    
  2. Если вы хотите изменить то, что происходит в заголовок, вы будете использовать «регионы урожайности

    <template name="default_layout"> 
        {{> yield "header"}} 
        {{> yield 
        {{> yield "footer"}} 
    </template> 
    

    Тогда, скажем, маршрутное проверочные вы могли бы сделать это:.

    PostController = RouteController.extend({ 
        yieldRegions: { 
         'postHeader': {to: 'header'}, 
         'postFooter': {to: 'footer'} 
        } 
    }) 
    

    Затем в post_list маршрут, сделать это:

    Router.route('post_list', function(){ 
        controller: 'postController' 
    }); 
    

    В принципе, вы создаете контроллер, который может быть повторно использован для определенных маршрутов, и указывая контроллеру на размещение шаблона с именем postHeader в поле {{> yield "header}} и" postFooter "в { {> выход «нижний колонтитул»}}.

+0

So. мы создадим 'postHeader'' answerHeader' ... базу для нашей цели, не так ли? И обычно, где мы будем помещать 'PostController = RouteController.extend ...'? Тот же файл с 'Route.route' или должен быть в другом файле. ? спасибо :) –

+2

Вы можете использовать отдельные файлы для своей логики маршрутизации, если хотите, но все они должны быть в папке с именем «lib», которая делает их доступными как на сервере, так и на клиенте. Или вы можете просто выбросить их в один файл «router.js» внутри папки lib. Первое, вероятно, лучший вариант. –

+2

, например, у вас может быть файл postRoutes.js, и внутри у вас будет и PostController, и ваш маршрут Router.route ('post_list', function()). –

Смежные вопросы