我想将模板数据传递给我定义的“textfield”辅助方法,如下所示:
{{textfield label="{{label}}"
id="account_{{attributes.id}}"
name="account[{{attributes.name}}]"
class="some-class"
required="true"}}
(请注意{{textfield}}帮助程序调用中的{{label}}和{{attributes.id}}引用)
以下是我设置模板的地方:
data = {
"attributes": {
"id": "name",
"name": "name"
},
"label": "Name"
}
var templateHtml = 'markup here';
var template = Handlebars.compile(templateHtml);
var formHtml = template(data);
这是jsFiddle。
当我运行它时,我仍然在编译的标记中看到{{placeholders}}。
我该如何做到这一点?
答案 0 :(得分:8)
您使用不正确的语法将命名参数传递给您的把手助手。你想要的是这样的:
var data = {
"attributes": {
"name": "name"
}
}
var templateHtml = '{{textfield name=attributes.name}}';
var template = Handlebars.compile(templateHtml);
var formHtml = template(data);
更新的小提琴:http://jsfiddle.net/3yWn9/1/
答案 1 :(得分:0)
好吧,似乎两次编译模板都有效。从效率的角度来看很糟糕,但事实就是如此。如果有人有替代解决方案,请发帖。
var data = { "something": "value", "id": "theId", "theClass": "class-here", "value": "the value" };
var markup = $('#test-template').html();
var template = Handlebars.compile(markup);
var compiled = template(data);
var template2 = Handlebars.compile(compiled);
var compiled2 = template2(data);
$('body').append(compiled2);
这是一个新的jsFiddle,展示了双重编译。