预编译的车把模板不起作用

时间:2014-07-08 17:45:25

标签: javascript handlebars.js precompiled

我预先编译了我的把手模板:

 handlebars tabs.hbs -f tabs.js

我像这样加载它们:

 <script type="text/javascript" src="js/handlebars.runtime.min.js"></script>
 <script type="text/javascript" src="js/templates/tabs.js"></script>
 <script type="text/javascript" src="js/tabsData.js"></script>

这就是我为预编译模板提供上下文的方法:

var template=Handlebars.templates["tabs.hbs"];
var html=template(tabsData);
console.log(html)
sidebar.setContent(html);

我收到此错误:

Uncaught TypeError: undefined is not a function    handlebars.runtime.js 436
 /*Error points here*/
 var result = templateSpec.call(
        container,
        namespace, context,
        helpers,
        partials,
        options.data);

这是template

  function (context, options) {
  options = options || {};
  var namespace = options.partial ? options : env,
      helpers,
      partials;

  if (!options.partial) {
    helpers = options.helpers;
    partials = options.partials;
  }
  var result = templateSpec.call(
        container,
        namespace, context,
        helpers,
        partials,
        options.data);

  if (!options.partial) {
    env.VM.checkRevision(container.compilerInfo);
  }

  return result;
} 

1 个答案:

答案 0 :(得分:4)

正如biomorgoth在这里评论的那样:https://stackoverflow.com/a/22214119

确保您的npm版本与客户端版本相对应。客户端版本位于js文件的顶部,您可以找到npm版本:

npm list -g | grep handlebars

用npm安装1.3.0版本为我解决了这个问题。

sudo npm install -g handlebars@1.3.0