如何让我的辅助函数先加载? (流星,节点框架)

时间:2013-07-16 23:10:43

标签: 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中定义它,它既不会工作..

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

谢谢!

2 个答案:

答案 0 :(得分:4)

我认为您正在寻找的是全球可用的车把助手 - 我将其保存在client / lib / handlebars.js中 - “lib”文件夹的内容将首先加载

定义每个帮助器:

Handlebars.registerHelper("joinArray", function(array) {
  if(array)
    return array.join(', ');
});

然后你会在任何模板html文件中使用它,如:

{{joinArray tags}}

你可以在这里阅读更多关于把手助手的信息handlebarsjs.com/block_helpers.html


这是IMO的'正确'方式,但是如果你想使用普通的javascript函数而不是把手助手,那也可以


你需要将常用的javascript函数放在像client / lib / helpers.js这样的文件中,不要使用'var'声明前缀

像这样:

thisIsAGloballyAvailableFunction = function(){...};

不喜欢:

var thisFunctionIsOnlyAvailableInThisFile = function(){...};
meteor控制范围确实有点奇怪。任何带有'var'的东西都是它出现的文件范围的本地,任何声明没有'var'的东西在整个应用程序中是全局可用的

答案 1 :(得分:1)

nate-strauser的答案是正确的,并帮助我找到了正确的解决方案,但现在(Meteor 1.0)Handlebars.registerhelper()已被弃用。

现在它以这种方式工作(如果有人仍然感兴趣):

Template.registerHelper()

其余的由nate-strauser解释。