未捕获的TypeError:Handlebars.compile不是函数

时间:2015-09-06 07:17:42

标签: handlebars.js

这是我的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不是函数。

3 个答案:

答案 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提供的答案帮助我找到了真正的问题。