为了避免重复代码,我发现有一个辅助函数可以从foo.rendered函数中调用(例如).为什么这可能在Meteor的0.9.3中,但在1.0中引发错误?
Template.foo.helpers({
'fooFn' : function(){
return "something"
}
});
Template.foo.rendered = function(){
var something = Template.foo.fooFn();
}
Run Code Online (Sandbox Code Playgroud)
我应该更改foo.rendered中的语法(我称之为错误?)或者可能完全使用不同的方法(在帮助器({})之外设置函数并渲染()并调用它们?或者将其设置为注册助手功能?
从Meteor 1.0.3.1开始,它似乎有可能找到并调用辅助函数,尽管很明显它不应该像这样使用.
还是可以做到:
Template.foo.__helpers[" fooFn"]()
Run Code Online (Sandbox Code Playgroud)
请注意功能名称的前导空格.
处理此问题的另一种方法是将函数附加到全局命名空间,然后从代码中的其他位置调用该函数,user3557327如上所述.
另外你可以使用:
Template.registerHelper('myHelper', function (){return 'Look At Me!'})
Run Code Online (Sandbox Code Playgroud)
注册一个全局帮助器,并使用以下命令显式调用它:
UI._globalHelpers['myHelper']()
Run Code Online (Sandbox Code Playgroud)