【问题标题】:What causes "Template is not defined" in Meteor?是什么导致 Meteor 中的“模板未定义”?
【发布时间】:2012-05-13 14:52:25
【问题描述】:

这个极其简单的 Meteor 应用在​​加载时会抛出 Template is not defined 错误。该应用程序本质上与样板项目 (meteor create) 相同,只是分为服务器/客户端/公共目录。

Meteor 似乎试图在全局 Template 对象实际准备好之前渲染 Handlebars template 标签。当我可以进入 JS 控制台并输入“模板”时,它就在那里。

我是不是做错了什么,或者这是一个时间错误?

【问题讨论】:

  • 您在哪里包含此模板以供使用?听起来您正在尝试在首次加载 meteor.js 之前包含模板
  • Meteor 处理捆绑和包含项目中的所有 js 文件,因此不可能在meteor.js 之前包含模板。如果我理解你的话。无论哪种方式,所选答案都会显示问题所在。
  • 当我将UI.registerHelper 切换到新的Template.registerHelper 时遇到了这个问题。一定是不推荐使用的UI曾经为服务器和客户端定义,但Template只为客户端定义。

标签: javascript meteor


【解决方案1】:

您需要确保在调用模板的 .js 文件中包含在 if (Meteor.isClient){} 中,否则 Template 全局变量将由于某种原因不可用。

【讨论】:

  • 为什么会有这种行为?即使我使用不同的客户端/服务器文件夹,我也需要这个技巧吗?
  • 我在同一位置为客户端和服务器单独的文件夹。在我这样做之后,错误就消失了。但我不能 100% 确定这是否是合适的解决方案。你不应该这样做。也许我的流星服务器死了,我不知道浏览器缓存并且看起来应用程序仍在运行。
  • 这就是发生在我身上的事情,忘记在api.addFiles() 中添加, "client" package.js
【解决方案2】:

嗯,也许这会解决你的问题:

注意body标签包含模板名称,但不包含模板:

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

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

另外,请注意“.greet”指的是 {{greet}}:

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

所以,问题是正文中不能有模板。相反,主体使用 {{> hello}} 调用模板,如上面的代码所示。

【讨论】:

  • 现在是Meteor.isClient 而不是is_client
【解决方案3】:

如果这是在一个包中,请确保你的 api 使用列表中有模板,即

api.use('模板', '客户端');

这可确保您的代码在模板对象被实例化后运行。

【讨论】:

    【解决方案4】:

    尝试 Template.hello.this 将数据传递给 {{this}}

    【讨论】:

      【解决方案5】:

      这是一个初始化问题。我正在使用 Meteor 1.0,我通过添加解决了这个问题 Meteor.startup(function () {}if 阻止 Meteor.isClient

      这可能是一个错误,因为特殊目录上的文档如下(截至今天):

      客户端:任何名为客户端的目录都不会加载到服务器上。类似于将代码包装在 if (Meteor.isClient) { ... } 中。在生产模式下,客户端上加载的所有文件都会自动连接和缩小。在开发模式下,每个文件都是单独发送的,以便于调试。 Meteor 应用程序中的 HTML 文件的处理方式与服务器端框架有很大不同。 Meteor 扫描目录中的所有 HTML 文件以查找三个顶级元素:&lt;head&gt;&lt;body&gt;&lt;template&gt;。头部和身体部分分别连接成一个单独的头部和身体,在初始页面加载时传输给客户端。

      但是如果没有初始化,这会失败并显示“找不到模板错误”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-22
        • 2017-05-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多