Javascript 如何在Meteor中将全局模板帮助程序组合在一起?

Javascript 如何在Meteor中将全局模板帮助程序组合在一起?,javascript,meteor,meteor-blaze,spacebars,meteor-helper,Javascript,Meteor,Meteor Blaze,Spacebars,Meteor Helper,我有几个全局模板助手 Template.registerHelper("termSuffix",function(){}); Template.registerHelper("subjects",function(){}); Template.registerHelper("date",function(){}); ... Template.registerHelper({ termSuffix:function(){}, subjects:function(){}

我有几个全局模板助手

Template.registerHelper("termSuffix",function(){});

Template.registerHelper("subjects",function(){});

Template.registerHelper("date",function(){});
...
Template.registerHelper({
      termSuffix:function(){},
      subjects:function(){},
      date:function(){}
});
我尝试了这个(像普通/本地模板助手)


但是它从跟踪器重新计算函数中抛出异常:错误:没有这样的函数:termSuffix

全局帮助程序不支持此语法

如果您认为这是对库的一个足够引人注目的更改,那么您可以提交一个pull请求

同时,您可以使用自己的函数包装Template.registerHelper函数:

function registerGlobalHelpers(helpers){
    _.chain(helpers)
     .each( (fn, name) => { Template.registerHelper(name, fn); })
     .value();
  }
或在不带下划线的情况下定义:

function registerGlobalHelpers(helpers){
  _.each(helpers, (fn, name) => { Template.registerHelper(name, fn); });
  }
然后像这样使用它:

registerGlobalHelpers({
      termSuffix:function(){},
      subjects:function(){},
      date:function(){}
})

我认为这是不可能的。你有没有令人信服的理由想这么做?如果它与非全局模板帮助程序一致,那就太好了(r),但是这种语法不受支持(至少就文档而言)我在应用程序中有太多的
模板。registerHelper
,看起来不太整洁。干净、简短、优雅。谢谢@JeremyK+1这些命令中的大多数都是多余的,您可以只使用
.each(helpers,(fn,name)=>{Template.registerHelper(name,fn);})这就足够了。@Styx,是的,
.key()
可以而且应该随着iteratee函数的简化而删除-我将更新它。剩下的是偏好问题。我喜欢链接命令的流畅界面方法,因此通常使用带下划线的.chain/.value。诚然,当他们之间只剩下一个推荐时,如果这个推荐增加了很多价值,这是值得商榷的!我将在答案中添加这两个选项