Javascript 获取Meteor中用户定义模板的列表
我想为Meteor中的每个用户定义模板执行一个函数 例如:Javascript 获取Meteor中用户定义模板的列表,javascript,meteor,Javascript,Meteor,我想为Meteor中的每个用户定义模板执行一个函数 例如: <template name="settings"> <p>Settings</p> </template> 是否有一些定义良好的方法来获取用户定义(非系统定义)模板列表?到目前为止,此解决方案仍在使用: var template_names = []; for (var key in Template) { if (Template.hasOwnProperty(key))
<template name="settings">
<p>Settings</p>
</template>
是否有一些定义良好的方法来获取用户定义(非系统定义)模板列表?到目前为止,此解决方案仍在使用:
var template_names = [];
for (var key in Template) {
if (Template.hasOwnProperty(key)) {
// Meteor internal templates begin with _
if (key.indexOf('_') !== 0) {
template_names.push(key);
}
}
}
它将包括其他软件包中包含的模板。尝试以下操作:
$.each(Template, function(template) {
if(template.startsWith("_")){
// Assuming user defined templates do not start with a "_"
return true;
}
Template[template].rendered = defaultRenderingFunction;
});
你为什么不反过来做呢?在client/lib文件夹中的某个位置定义一个全局defaultRenderingFunction(),并从模板的呈现回调中调用它。通过这种方式,您可以更细粒度地控制在何处运行它。这就是我最初所做的,而且它是有效的。但是稍后当我们添加新模板时,另一个开发人员(甚至我自己)很容易忘记将函数分配给新模板的
呈现的
属性。如果我在这里概述的方法奏效,我们可以构建一个帮助器来构建一个模板,默认情况下自动添加这个函数(但这仍然需要开发人员记住使用这个帮助器!)
$.each(Template, function(template) {
if(template.startsWith("_")){
// Assuming user defined templates do not start with a "_"
return true;
}
Template[template].rendered = defaultRenderingFunction;
});