Meteor не может отображать динамические шаблоны

Я использую Meteor с пакетом iron:router. Я пытаюсь просто преобразовать базовый шаблон в шаблон макета, но продолжаю получать сообщение об ошибке:

Exception from Tracker recompute function: Error: Couldn't find a template named "/" or "". Are you sure you defined it?

Для моего маршрута '/' у меня есть следующее:

// router.js

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

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

Мои шаблоны выглядят так:

<!--main.html -->

<head>
  <title>App</title>
</head>

<body>
</body>

<template name='layout'>
  <div id='container'>
    {{> yield}}
  </div>
</template>

<template name='welcome'>
  <p>Welcome</p>
</template>

Для моего пакета я сначала попытался просто установить плагин iron:router. Кажется, было добавлено железо: ядро, железо: динамические шаблоны и железо: макет. С тех пор я добавил каждую библиотеку отдельно:

> meteor list
iron:core              0.3.4  Iron namespace and utilities.
iron:dynamic-template  0.4.1  Dynamically create and update templates and the...
iron:layout            0.4.1  Dynamic layouts which enable rendering dynamic ...
iron:router            0.9.4  Routing specifically designed for Meteor
meteor-platform        1.1.1  Include a standard set of Meteor packages in yo...

person Kombo    schedule 03.10.2014    source источник
comment
Как писал saimeunt, вам не нужно использовать теги ‹body›   -  person yoK0    schedule 03.10.2014


Ответы (1)


Попробуйте изменить router.js на:

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

Router.route('/',{
  // give the the route a name to help it find your welcome template
  // let the default action function render the layout + template for you
  name:"welcome"
});

Вы также можете избавиться от пустого тела, и, к вашему сведению, вам не нужно вручную добавлять iron:router зависимости: в первую очередь для этого нужна система пакетов :)

person saimeunt    schedule 03.10.2014
comment
При использовании приведенного выше кода я все еще не могу найти шаблон. Я могу отобразить его с помощью {{> welcome}} (без использования маршрутизатора). Я исправил конфигурацию layoutTemplate, а также попытался жестко закодировать ее в маршруте, например evatedmind.github. io/iron-router/#layouts. - person Kombo; 03.10.2014
comment
Я попытался переустановить пакеты, на случай, если я что-то напутал, добавив их все вручную, потому что я был параноиком, и они не отображались с > meteor list. Маршрутизатор отлично работает при рендеринге одного шаблона, просто ничего не может сделать с доходностью. - person Kombo; 03.10.2014
comment
Кажется, у меня есть вещи, работающие с этим синтаксисом, он не кажется задокументированным, поэтому, возможно, он устарел: Router.route('welcome', { path: '/' }); Спасибо, saimeunt! - person Kombo; 03.10.2014
comment
Что ж, это старый синтаксис, который станет устаревшим в версии 1.0.0, вы должны придерживаться более нового синтаксиса и meteor add iron:[email protected] идти в ногу с передовым маршрутизатором: eventedmind.github.io/iron-router - person saimeunt; 03.10.2014