这个极其简单的 Meteor 应用程序Template is not defined
在加载时会引发错误。该应用程序本质上与样板项目 ( meteor create
) 相同,只是拆分为 server/client/public 目录。
Meteor 似乎试图template
在全局 Template 对象实际准备好之前渲染 Handlebars 标签。当我可以到达 JS 控制台并输入“模板”时,它就在那里。
我做错了什么,还是这是一个计时错误?
这个极其简单的 Meteor 应用程序Template is not defined
在加载时会引发错误。该应用程序本质上与样板项目 ( meteor create
) 相同,只是拆分为 server/client/public 目录。
Meteor 似乎试图template
在全局 Template 对象实际准备好之前渲染 Handlebars 标签。当我可以到达 JS 控制台并输入“模板”时,它就在那里。
我做错了什么,还是这是一个计时错误?
您需要确保在调用模板的 .js 文件中包含在 .js 中if (Meteor.isClient){}
,否则由于Template
某种原因全局变量将不可用。
嗯,也许这会解决你的问题:
请注意,body 标签包含模板名称但不包含模板:
<body>
{{> hello}}
</body>
<template name="hello">
{{greet}}
</template>
另外,请注意“.greet”指的是 {{greet}}:
if (Meteor.isClient) {
Template.hello.greet = function () {
return "Hey!";
};
}
所以,问题是你不能在正文中有模板。相反,主体使用 {{> hello}} 调用模板,如上面的代码所示。
如果这在一个包中,请确保您的 api 使用列表中有模板,即
api.use('模板', '客户端');
这可确保您的代码在模板对象被实例化后运行。
尝试 Template.hello.this 将数据传递给 {{this}}
这是一个初始化问题。Meteor.startup(function () {}
我正在使用Meteor 1.0,我通过
if
在Meteor.isClient
.
这可能是一个错误,因为特殊目录上的文档如下(截至今天):
客户端:任何名为客户端的目录都不会加载到服务器上。类似于将代码包装在 if (Meteor.isClient) { ... } 中。在生产模式下,客户端上加载的所有文件都会自动连接和缩小。在开发模式下,每个文件都是单独发送的,以便于调试。Meteor 应用程序中的 HTML 文件的处理方式与服务器端框架有很大不同。Meteor 扫描目录中的所有 HTML 文件以查找三个顶级元素:
<head>
、<body>
和<template>
. 头部和身体部分分别连接成一个单独的头部和身体,在初始页面加载时传输给客户端。
但如果没有初始化,这将失败并出现“找不到模板错误”。