【问题标题】:Get list of user-defined templates in Meteor获取 Meteor 中用户定义的模板列表
【发布时间】:2014-02-20 22:38:41
【问题描述】:

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

例子:

<template name="settings">
    <p>Settings</p>
</template>

然后在一些 JS 文件中:

template_names = ...
_.each(template_names, function(name) {
    Template[name].rendered = defaultRenderingFunction;
});

是否有一些明确的方法来获取用户定义(非系统定义)模板的列表?

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    目前为止使用此解决方案:

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

    它将包括其他包中包含的模板。

    【讨论】:

    • 为什么不反过来呢?在您的 client/lib 文件夹中的某处定义一个全局 defaultRenderingFunction() 并从模板的渲染回调中调用它。这样您就可以更精细地控制在何处运行。
    • 这就是我一开始所做的,并且有效。但是稍后当我们添加新模板时,其他开发人员(甚至我自己)很容易忘记将函数分配给新模板的rendered 属性。如果我在这里概述的方法行得通,我们可以构建一个帮助器来构建一个默认情况下会自动添加此功能的模板(但这仍然需要开发人员记住使用该帮助器!)
    【解决方案2】:

    试试这个:

    $.each(Template, function(template) {
        if(template.startsWith("_")){
            // Assuming user defined templates do not start with a "_"
            return true;
        }
        Template[template].rendered = defaultRenderingFunction;
    });
    

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多