2012-11-17 34 views
11

我有这样的模板:如何流星模板添加到身体包内

<template name="sample"> 
    <h1>Sample</h1> 
</template> 

内流星程序,我可以将此这种方式添加到主体(如部分):

{{> sample}} 

它的工作原理。我甚至测试过要调用Template.sample();在浏览器控制台内部,它的工作

当我将其移动到我的包(即包文件夹内的sample.html文件)时,模板似乎消失了:每当我调用该函数时,我都会得到Template.sample() is not a function,我甚至无法将其渲染为部分。

我有这个代码package.js(显然封装是否正确装入我的应用程序内通过packages文件中.meteor):

Package.on_use(function (api) { 
    api.add_files(['sample.html', 'sample.js'], 'client'); 
}); 

为什么这不起作用? 如何从包装中追加(反应性)模板到身体?

回答

30

解决!加入这一行:

api.use(['templating'], 'client'); 
+1

此处的另一个问题是,如果您选择将大部分应用程序放入包中,则需要注意加载顺序。你必须在任何相关的JS /咖啡文件之前先加载模板,否则你会得到一个“模板不存在”的类型错误。 – dcsan

+4

你应该接受你自己的答案,所以问题显示为“已解决”,排名更好:) – MattiSG

12

也是很重要的,包括前js

api.add_files("client/sampleTemplate.html", "client"); 
api.add_files("client/sampleTemplate.js", "client"); 
+0

正确,所以模板JS文件可以访问HTML中定义的模板。 –

1

html文件

api.use('meteor-platform'); 
api.use('ui');` 

后在包的文件packages.js包括第一个“.html”文件,af ter“.js”文件

api.addFiles('filename.html','client'); 
api.addFiles('filename.js','client');`