Javascript 如何首先加载助手函数?(Meteor,节点框架)
在我的Meteor项目中,我有几个类似的助手函数 helpers.jsJavascript 如何首先加载助手函数?(Meteor,节点框架),javascript,node.js,meteor,Javascript,Node.js,Meteor,在我的Meteor项目中,我有几个类似的助手函数 helpers.js var tagStr = function () { return this.tags.join(', '); }; articles.js Template.articles.tags = tagStr; listing.js Template.listing.tags = tagStr; 现在,我可以在articles.js或listing.js中定义该函数,但在另一个中它不起作用。或者我可以在helpers.js
var tagStr = function () { return this.tags.join(', '); };
articles.js
Template.articles.tags = tagStr;
listing.js
Template.listing.tags = tagStr;
现在,我可以在articles.js或listing.js中定义该函数,但在另一个中它不起作用。或者我可以在helpers.js中定义它,它在这两种情况下都不起作用
那么,如何在其他脚本之前加载助手函数呢?最好是以“正确的方式”
谢谢 我认为您正在寻找的是一个全球可用的Handlebar助手-我将我的助手保存在client/lib/handlebar.js中-将首先加载“lib”文件夹的内容 按如下方式定义每个辅助对象:
Handlebars.registerHelper("joinArray", function(array) {
if(array)
return array.join(', ');
});
然后,您可以在任何模板html文件中使用此选项,如下所示:
{{joinArray tags}}
您可以在handlebarsjs.com/block_helpers.html阅读更多关于把手助手的信息
在我看来,这是一种“正确”的方法,但是如果您想使用普通的javascript函数而不是Handlebar助手,那么这种方法也适用
您需要将常用的javascript函数放在client/lib/helpers.js这样的文件中,并且不要使用“var”声明前缀 像这样:
thisIsAGloballyAvailableFunction = function(){...};
不像:
var thisFunctionIsOnlyAvailableInThisFile = function(){...};
meteor做了一件稍微奇怪的事情来控制范围。任何带有“var”的内容都是它所在文件范围内的本地内容,任何声明没有“var”的内容都可以在整个应用程序中全局使用我想你要找的是一个全局可用的handlebars助手-我将我的内容保存在client/lib/handlebars.js中-将首先加载“lib”文件夹的内容 按如下方式定义每个辅助对象:
Handlebars.registerHelper("joinArray", function(array) {
if(array)
return array.join(', ');
});
然后,您可以在任何模板html文件中使用此选项,如下所示:
{{joinArray tags}}
您可以在handlebarsjs.com/block_helpers.html阅读更多关于把手助手的信息
在我看来,这是一种“正确”的方法,但是如果您想使用普通的javascript函数而不是Handlebar助手,那么这种方法也适用
您需要将常用的javascript函数放在client/lib/helpers.js这样的文件中,并且不要使用“var”声明前缀 像这样:
thisIsAGloballyAvailableFunction = function(){...};
不像:
var thisFunctionIsOnlyAvailableInThisFile = function(){...};
meteor做了一件稍微奇怪的事情来控制范围。任何带有“var”的内容都是其所在文件范围的局部内容,任何声明没有“var”的内容都可以在整个应用程序中全局使用nate strauser的回答是正确的,帮助我找到了正确的解决方案,但现在(Meteor 1.0)
Handlebar.registerhelper()
已被弃用
现在它是这样工作的(如果还有人感兴趣):
其余部分由nate strauser解释。nate strauser的回答是正确的,帮助我找到了正确的解决方案,但现在(Meteor 1.0)
车把。registerhelper()
已被弃用
现在它是这样工作的(如果还有人感兴趣):
其余部分由nate strauser解释