2012-11-17 92 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');`