Глобальная функция для помощника шаблона Meteor
Я зарегистрировал глобальную функцию, подобную этой:
Handlebars.registerHelper('dialogBoxOptions', function (callbackFunctionName){
return {
callBack: callbackFunctionName
};
});
но когда я пытаюсь получить к нему доступ, как показано ниже, я получаю dialogBoxOptions не определен
Template.myLlist.helpers({
dOpt: dialogBoxOptions('dlgCB')
});
Я пробовал это как глобальный помощник handlebars и регулярную функцию javascript, но получал тот же результат.
Ответы
Ответ 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);
Ответ 3
Использовать Template.registerHelper(name, function)
Как показано в Метеоритная документация
Ответ 4
В Meteor 1.0+ теперь выглядит синтаксис создания глобального помощника:
Template.registerHelper('functionName',function(param1,param2){
... your code here ...
})
Затем используйте его в любом месте клиента:
var result = Blaze._globalHelpers.functionName(param1, param2);
OTOH, объект пользовательского интерфейса не отображается в текущей документации, поэтому мне остается недоумевать, благословлено ли это использование.