Meteor模板助手的全局功能

时间:2013-12-19 12:25:22

标签: meteor

我已经注册了这样一个全局函数:

Handlebars.registerHelper('dialogBoxOptions', function (callbackFunctionName){
    return {
        callBack: callbackFunctionName
    };
});

但当我尝试按如下方式访问它时,我得到了dialogBoxOptions未定义

Template.myLlist.helpers({
    dOpt: dialogBoxOptions('dlgCB')
});

我已尝试将其作为全局手柄助手和常规javascript函数,但得到的结果相同。

4 个答案:

答案 0 :(得分:20)

您无法以这种方式访问​​车把助手:您可以在模板中访问它们:

<template name="myList">
     {{dialogBoxOptions.callback 'something'}}
</template>

如果您想在助手中访问它,就像现在一样,您应该注册一个全局方法。您可以将其放在/lib/helpers.js

这样的文件中
dialogBoxOptions = function (callbackFunctionName){
    return {
        callBack: callbackFunctionName
    };
}

此外,如果您想创建一个全局模板助手,现在的语法是:

Template.registerHelper("dialogBoxOptions", function (param2) {
    return true;
});

答案 1 :(得分:13)

现在有办法访问已注册的全球帮助者。

//Register the helper
UI.registerHelper("functionName", function (param1, param2) {
  return true;
});

//Use the helper elsewhere
var result = UI._globalHelpers('functionName')(param1, param2);

答案 2 :(得分:7)

使用Template.registerHelper(name, function)
Meteor Documentation

所示

答案 3 :(得分:6)

在Meteor 1.0+中,现在看来是创建全局帮助程序的语法:

Template.registerHelper('functionName',function(param1,param2){
  ... your code here ...
})

然后在客户端的任何地方使用它:

var result = Blaze._globalHelpers.functionName(param1, param2);

OTOH,UI对象没有出现在当前documentation中,所以我想知道这种用法是否有福。