Как использовать несколько параметров в помощнике руля с метеор?
Я пытаюсь создать пользовательский помощник, используя Meteor. Следуя за доком здесь:
https://github.com/meteor/meteor/wiki/Handlebars
Я попытался определить свой помощник следующим образом:
Template.myTemplate.testHelper = function(foo, bar, options) {
console.log(foo);
console.log(bar);
}
Мой шаблон выглядит так:
<template name="myTemplate">
{{#testHelper "value1" "value2"}}
{{/testHelper}}
</template>
Посмотрев на мой консольный вывод, я ожидал увидеть 2 строки вывода:
value1
value2
Однако моя консоль выглядит так:
value1
function (data) {
// don't create spurious annotations when data is same
// as before (or when transitioning between e.g. `window` and
// `undefined`)
if ((data || Handlebars._defaultThis) ===
(old_data || Handlebars._defaultThis))
return fn(data);
else
return Spark.setDataContext(data, fn(data));
}
Заметьте, я совершенно не знаком с метеор и рулями. Я думаю, что я был бы намного счастливее, используя подчеркивание, но документация для метеорных взглядов почти подчеркивает почти полностью. Я делаю что-то неправильно, определяя свою вспомогательную функцию? Кажется, что он не видит второй параметр "bar", а вместо этого интерпретирует это как параметры. (Примечание: если я console.log(параметры) возвращает 'undefined').
Метеор версии 0.4.0 (8f4045c1b9)
Ответы
Ответ 1
Ваша логика хороша, просто внесите некоторые изменения в шаблон
<template name="myTemplate">
{{testHelper "value1" "value2"}}
</template>
Имейте в виду, что функция testHelper определена только в шаблоне myTemplate.
Если вы хотите зарегистрировать testHelper глобально, вам нужно сделать что-то вроде этого
Handlebars.registerHelper('testHelper', function(foo, bar){
console.log(foo);
console.log(bar);
});
Удачи
Ответ 2
Дополнение к
<template name="myTemplate">
{{testHelper "value1" "value2"}}
</template>
Вместо передачи значения в качестве параметра передайте функцию как параметр. Вот код для этого
<template name="myTemplate">
{{ testHelper1 (testHelper2 "value2") }}
</template>
ура!!!!!