Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何首先加载助手函数?(Meteor,节点框架)_Javascript_Node.js_Meteor - Fatal编程技术网

Javascript 如何首先加载助手函数?(Meteor,节点框架)

Javascript 如何首先加载助手函数?(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

在我的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中定义它,它在这两种情况下都不起作用

那么,如何在其他脚本之前加载助手函数呢?最好是以“正确的方式”


谢谢

我认为您正在寻找的是一个全球可用的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解释