2017-08-12 65 views
1

我有几个全局模板助手如何将全局模板助手放在流星中?

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

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

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

我想这(像正常/本地模板佣工)

Template.registerHelper({ 
     termSuffix:function(){}, 
     subjects:function(){}, 
     date:function(){} 
}); 

但它抛出Exception from Tracker recompute function:Error: No such function: termSuffix

+0

我不相信这是可能的。你是否有想要这样做的令人信服的理由?如果它与非全局模板助手一致,那么它会很好(r),但不支持这种语法(至少就文档而言)https://docs.meteor.com/v1.3.5/api /templates.html#Template-registerHelper – JeremyK

+0

我在应用程序中有太多'Template.registerHelper',它看起来不太整齐。 – Abk

回答

1

这句法不支持全球帮手。 DocsCode

如果您认为这对图书馆来说是足够引人注意的更改,那么您可以提交拉取请求。在underscorejs

function registerGlobalHelpers(helpers){ 
    _.chain(helpers) 
    .each((fn, name) => { Template.registerHelper(name, fn); }) 
    .value(); 
    } 

或定义不chaining

同时,你可以用自己的包裹Template.registerHelper功能

function registerGlobalHelpers(helpers){ 
    _.each(helpers, (fn, name) => { Template.registerHelper(name, fn); }); 
    } 

然后使用它是这样的:

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

干净,短小而优雅。谢谢@JeremyK +1 – Abk

+1

大多数这些命令是过度的,你可以使用'_.each(helpers,(fn,name)=> {Template.registerHelper(name,fn);});'那就够了。 – Styx

+0

@Styx,是的,'.key()'可以并且应该被删除,以允许iteratee函数被简化 - 我会更新它。其余的是一个偏好问题。我喜欢链接命令的流畅接口方法,所以一般使用.chain/.value和下划线。无可否认,当他们之间只剩下一个推荐时,如果增加更多价值,这是可辩论的!我会在答案中添加两个选项 – JeremyK