2017-08-12 112 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