我预先编译了我的把手模板:
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;
}
答案 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