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

Как использовать несколько параметров в помощнике руля с метеор?

Я пытаюсь создать пользовательский помощник, используя 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)

4b9b3361

Ответ 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>

ура!!!!!