Подтвердить что ты не робот

Какие причины "Шаблон не определен" в "Метеор"?

Это чрезвычайно простое приложение Meteor вызывает ошибку Template is not defined при загрузке. Приложение практически идентично проекту шаблона (meteor create), просто разбитому на серверные/клиентские/общедоступные каталоги.

Кажется, что Метеор пытается отобразить теги Handelbers template до того, как глобальный объект Template действительно готов. К тому времени, когда я смогу добраться до консоли JS и введите "Template", она есть.

Я сделал что-то не так, или это ошибка времени?

4b9b3361

Ответ 1

Hm, возможно, это решит вашу проблему:

Обратите внимание, что тег body содержит имя шаблона, но не шаблон:

<body>
  {{> hello}}
</body>

<template name="hello">
  {{greet}}
</template>

Также обратите внимание, что ".greet" относится к {{greet}}:

if (Meteor.isClient) {
  Template.hello.greet = function () {
    return "Hey!";
  };
}

Итак, проблема заключалась в том, что у вас не может быть шаблона внутри тела. Вместо этого тело вызывает шаблон с {{ > hello}}, как в приведенном выше коде.

Ответ 2

Вам нужно убедиться, что в вашем .js файле, который вызывает Шаблон, завернут в if (Meteor.isClient){}, иначе глобальный var Template по какой-то причине не будет доступен.

Ответ 3

Если это в пакете, убедитесь, что у вас есть шаблон в списке использования api, т.е.

api.use('templating', 'client');

Это гарантирует, что ваш код будет запущен после создания экземпляра объекта Template.

Ответ 4

Попробуйте Template.hello.this передать данные {{this}}

Ответ 5

Это проблема инициализации. Я использую Meteor 1.0, и я решил проблему, добавив Meteor.startup(function () {} или if до Meteor.isClient.

Это может быть ошибка, потому что документация по специальным каталогам написана ниже (по состоянию на сегодняшний день):

Клиент: любая директория с именем client не загружается на сервер. Аналогично обертыванию кода в if (Meteor.isClient) {...}. Все файлы, загруженные на клиенте, автоматически объединяются и минимизируются в режиме производства. В режиме разработки каждый файл отправляется индивидуально для упрощения отладки. HTML файлы в приложении Meteor обрабатываются совсем немного иначе, чем на стороне сервера. Meteor сканирует все файлы HTML в вашем каталоге для трех элементов верхнего уровня: <head>, <body> и <template>. Секции головы и тела отдельно конкатенируются в одну головку и тело, которые передаются клиенту при начальной загрузке страницы.

Но без инициализации это не с ошибкой "Шаблон не найден".