Подтвердить что ты не робот

Глобальная функция для помощника шаблона Meteor

Я зарегистрировал глобальную функцию, подобную этой:

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

но когда я пытаюсь получить к нему доступ, как показано ниже, я получаю dialogBoxOptions не определен

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

Я пробовал это как глобальный помощник handlebars и регулярную функцию javascript, но получал тот же результат.

4b9b3361

Ответ 1

Вы не можете обращаться к помощникам руля таким образом, чтобы вы могли получить к ним доступ в шаблоне:

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

Если вы хотите получить к нему доступ в своем помощнике, как сейчас, вы должны зарегистрировать глобальный метод. Вы можете поместить это в файл как /lib/helpers.js

dialogBoxOptions = function (callbackFunctionName){
    return {
        callBack: callbackFunctionName
    };
}

Также, если вы хотите создать глобальный помощник шаблона, синтаксис теперь:

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

Ответ 2

Теперь есть способ получить доступ к зарегистрированным глобальным помощникам.

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

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

Ответ 4

В Meteor 1.0+ теперь выглядит синтаксис создания глобального помощника:

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

Затем используйте его в любом месте клиента:

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

OTOH, объект пользовательского интерфейса не отображается в текущей документации, поэтому мне остается недоумевать, благословлено ли это использование.