Пытался передать переменную частичной без успеха.
Попробовать 1: передать шаблонный контекст
"продукт":
From template: {{product.name}}
<br>
{{> product_buttons}}
"product_buttons" partial:
From partial: {{product.name}}
Вывод:
From template: Awesome Steel Shoes
<br>
[object Object]
From partial:
Мы видим две проблемы:
- частичное не отображает ожидаемое значение. Я также попытался отобразить шаблон с помощью
{{> product_buttons this}
и{{> product_buttons product=product}
для того же самого результата -
[object Object]
вставляется в выходной файл
Попробуйте 2: передача хэш-переменной
"продукт":
From template: {{product.name}}
<br>
{{> product_buttons thename=product.name}}
"product_buttons" partial:
From partial: {{thename}}
Это вызывает ошибку Uncaught TypeError: Cannot read property 'thename' of undefined
в следующей строке из скомпилированного частичного:
return "From partial: "
+ this.escapeExpression(((helper = (helper = helpers.thename || (depth0 != null ? depth0.thename : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0,{"name":"thename","hash":{},"data":data}) : helper)))
^--- Error is from here
+ "";
Дополнительные примечания
Я предварительно скомпилирую шаблоны с помощью утилиты handlebars командной строки. Я использую handlebars 3.0.3, установленный с npm, но вывод handlebars -v
"3.0.1" странно. Я проверил пути и установки и не могу исправить это либо
Команда компиляции:
handlebars directory/*.handlebars -f file_name.tmpl.js
Пример использования шаблона:
Handlebars.registerPartial('product_buttons', Handlebars.templates.product_buttons);
product = {name: 'test'};
html = Handlebars.templates.product({product: product});
Любая помощь будет принята с благодарностью. Благодаря