Meteor模板助手的全局功能

A_L*_*A_L 11 meteor

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

Handlebars.registerHelper('dialogBoxOptions', function (callbackFunctionName){
    return {
        callBack: callbackFunctionName
    };
});
Run Code Online (Sandbox Code Playgroud)

但是当我尝试按下面的方式访问它时,我得到的是dialogBoxOptions没有定义

Template.myLlist.helpers({
    dOpt: dialogBoxOptions('dlgCB')
});
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个全局把手助手和常规的javascript函数,但得到了相同的结果.

Aks*_*hat 20

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

<template name="myList">
     {{dialogBoxOptions.callback 'something'}}
</template>
Run Code Online (Sandbox Code Playgroud)

如果你想像现在一样在助手中访问它,你应该注册一个全局方法.你可以把它放在像这样的文件中/lib/helpers.js

dialogBoxOptions = function (callbackFunctionName){
    return {
        callBack: callbackFunctionName
    };
}
Run Code Online (Sandbox Code Playgroud)

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

Template.registerHelper("dialogBoxOptions", function (param2) {
    return true;
});
Run Code Online (Sandbox Code Playgroud)

  • `function xx()`是变量作用域,因此它可以工作,但只能在它定义的文件中,同样`var xx = function()`也作用于文件.没有`var`关键字,所有文件都可以看到它.首先加载`/ lib`,这可能就是为什么它在你移动它之后才能工作 (3认同)

Jim*_*ugh 13

现在有一种方法可以访问已注册的全球帮助者.

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

//Use the helper elsewhere
var result = UI._globalHelpers('functionName')(param1, param2);
Run Code Online (Sandbox Code Playgroud)

  • @Aaron:`Template.registerHelper`将是正确的方法:http://docs.meteor.com/#/full/template_registerhelper (7认同)
  • 有点破解,但是在`Template.registerHelper({...})`之后,你可以从`Blaze._globalHelpers ['func_name']`获得这个函数. (4认同)
  • 是不是对于Template.helpers折旧了UI.registerHelper?在这种情况下访问Template.helpers的语法是什么?也许是Template._globalHelpers? (2认同)

Abd*_*ash 7

使用Template.registerHelper(name, function)
Meteor文档中所示


Mic*_*oyd 6

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

Template.registerHelper('functionName',function(param1,param2){
  ... your code here ...
})
Run Code Online (Sandbox Code Playgroud)

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

var result = Blaze._globalHelpers.functionName(param1, param2);
Run Code Online (Sandbox Code Playgroud)

OTOH,UI对象没有出现在当前的文档中,所以我想知道这个用法是否有福.