javascript - 在带有 Iron Router 的 Meteor 包中包含 HTML 模板

标签 javascript meteor

我试图在我自己的演示 Meteor 应用程序中模仿 Telescope 应用程序结构。他们的设置方式意味着所有代码都位于子包中,包括 HTML 模板等。

我有 Meteor 应用程序设置,因此我有以下内容:

  • 客户端
    • layout.html(包含 head 标签,用作页面的“基础”)
  • 服务器

    • index.js(包含 Iron 路由器的配置,例如默认的 layoutTemplate)
    • myapp-ui
      • 客户端
        • 仪表板.html
      • myapp-ui.js
      • package.js

在我的包中的 package.js 文件内,尝试加载 HTML 模板时有以下代码:

Package.describe({
    name: 'myapp-ui',
    version: '0.0.1',
    documentation: null
});

Package.onUse(function (api) {
    api.versionsFrom('1.1.0.2');

    api.use([
        'iron:router'
    ]);

    api.addFiles([
        'client/dashboard.html'
    ]);

    api.addFiles('myapp-ui.js');
});

myapp-ui.js 文件包含尝试将 dashboard.html 代码获取到我的应用程序中的代码:

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

dashboard.html 模板很简单:

<template name="dashboard">
    <p>Hello, world!</p>
</template>

问题是,当访问应该加载仪表板的localhost:3000页面时,我收到错误:

Couldn't find a template named "Dashboard" or "dashboard". Are you sure you defined it?

我有点困惑,因为我显然有一个模板 HTML 文件加载了名为“dashboard”的模板标签,并且该文件是通过 api.addFiles 加载到我的包中的。我是否需要使用其他包来加载包内的 HTML,还是我的代码不正确?

最佳答案

坚持使用大写或小写语法作为模板名称,目前您同时拥有 <template name="dashboard">this.render('Dashboard'); .

您实际上是否使用meteor add myapp-ui将包添加到应用程序中?

尝试依赖templating在客户端打包并加载client/dashboard.htm仅在客户端上:

api.use("templating", "client");
[...]
api.addFiles("client/dashboard.html", "client");

关于javascript - 在带有 Iron Router 的 Meteor 包中包含 HTML 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30857577/

相关文章:

javascript - 仍在尝试了解 mysql 到 json 数据

javascript - 将 Backbone.Layout 定义为 require js 模块?

javascript - 使用鼠标悬停将用户发送到新页面

javascript - Meteor 方法调用循环

javascript - ReactJS 和 Meteor : Generating <select> options?

javascript - 有没有办法重新排列 TypeScript 编译器生成的 JavaScript 模块?

javascript - 我怎样才能在一页上有这个 jQuery 图像幻灯片效果的多个实例

Meteor 如何创建全局事件?

javascript - Meteor.JS 基于类的事件安全吗?

meteor - 使用陨石包的特定分支