这是我的HTML:
<table id="tableUserPaymentTypeRight">
<col width="50%"/>
<col width="25%"/>
<col width="25%"/>
<script id="rowUserPaymentTypeRight" type="text/x-handlebars-template">
{{#each Data}}
<tr>
<td>{{FullName}}</td>
<td>
{{#if Right_Add}}
<input type="checkbox" value="{{UserID}}_0" checked/>
{{else}}
<input type="checkbox" value="{{UserID}}_0"/>
</td>
<td>
{{#if Right_Confirm}}
<input type="checkbox" value="{{UserID}}_1" checked/>
{{else}}
<input type="checkbox" value="{{UserID}}_1"/>
</td>
</tr>
{{/each}}
</script>
这是我的js:
var userPaymentTypeRight = $('#rowUserPaymentTypeRight').html();
var userPaymentTypeRightTpl = Handlebars.compile(userPaymentTypeRight);
var context = data;
var html = userPaymentTypeRightTpl(context);
$('#tableUserPaymentTypeRight').html(html);
这样的数据:
{
{UserID: 26031, FullName: "Aaron Zubler", Right_Add: null, Right_Confirm:null, RowIndex: 1},
{UserID: 26390, FullName: "Achilleas Hoppas", Right_Add: null, Right_Confirm: null, RowIndex: 2},
{UserID: 26168, FullName: "Ai Ke", Right_Add: null, Right_Confirm: null, RowIndex: 3},
{UserID: 26310, FullName: "Alessandra Giordanella", Right_Add: null, Right_Confirm: null, RowIndex: 4}
}
根据API似乎没错,但我得到了错误: 未捕获的TypeError:Handlebars.compile不是函数。
答案 0 :(得分:0)
什么是
console.log(Handlebars.compile)
显示?
在Firefox Firebug控制台上完成,我的节目显示:
function(input, options)
Handlebars的console.dir?矿:
console.dir(Handlebars)
输出:
helpers Object { helperMissing=function(), blockHelperMissing=function(), each=function(), more...}
...
VERSION "1.3.0"
....
compile function(input, options)
答案 1 :(得分:0)
您需要包含handlebars.amd.js
。
如果您有节点,请转到临时文件夹类型
npm install --save handlebars
进入\node_modules\handlebars\dist\
将文件handlebars.amd.js
复制到您的项目中。
答案 2 :(得分:0)
在我的情况下,错误发生是因为我使用的是Handlebars的运行时版本。由于我不打算预编译我的模板(不推荐),我已经转移到正常版本。
@JL Peyret提供的答案帮助我找到了真正的问题。