Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取Meteor中用户定义模板的列表_Javascript_Meteor - Fatal编程技术网

Javascript 获取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))

我想为Meteor中的每个用户定义模板执行一个函数

例如:

<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;
});