我正在创建一个meteor包,非常简单,例如this
api.addFiles(['errors.js', 'errors_list.html', 'errors_list.js'], 'client');
我注意到如果我将上面的代码更改为
api.addFiles(['errors.js', 'errors_list.js', 'errors_list.html'], 'client');
Meteor说:Template is not defined
。
很难找出导致此错误的原因。为什么js文件不能在addFiles中的html文件之前去?
答案 0 :(得分:0)
使用Spacebars(默认模板引擎)时,模板在HTML文件中定义:
<template name="fooTemplate">
...
</template>
然后,您可以从其他任何地方访问此模板,无论是HTML还是JS:
<!-- HTML file -->
{{> fooTemplate}}
//JS file
Template.fooTemplate
如果您在创建模板之前尝试进行此类访问,则会失败 Meteor包按顺序加载文件。这是您控制加载顺序的方法。
如果您在模板定义之前尝试使用模板,它会undefined
并在您尝试访问模板时抛出异常(fooTemplate is undefined
行)。
因此,与编程中的所有内容一样,始终先初始化,然后再使用。
把你的HTML文件放在JS之前,你就可以了。