Какие причины "Шаблон не определен" в "Метеор"?
Это чрезвычайно простое приложение Meteor вызывает ошибку Template is not defined
при загрузке. Приложение практически идентично проекту шаблона (meteor create
), просто разбитому на серверные/клиентские/общедоступные каталоги.
Кажется, что Метеор пытается отобразить теги Handelbers template
до того, как глобальный объект Template действительно готов. К тому времени, когда я смогу добраться до консоли JS и введите "Template", она есть.
Я сделал что-то не так, или это ошибка времени?
Ответы
Ответ 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>
. Секции головы и тела отдельно конкатенируются в одну головку и тело, которые передаются клиенту при начальной загрузке страницы.
Но без инициализации это не с ошибкой "Шаблон не найден".