我无法读取html中的预编译模板。这是由于与ember.js和handlebars.js的ember-precompile的版本兼容问题。
我的代码是这样的:
包含以下文件。
<script src="../js/libs/jquery-1.10.2.js"></script>
<script src="../js/libs/handlebars-v1.3.0.js"></script>
<script src="../js/libs/ember-1.2.0.js"></script>
<script src="js/precompile.js"></script>
<script src="js/precompile.app.js"></script>
在body标签内阅读我编译的模板。
<div id="tempdiv">haii</div>
<script type="text/javascript">
var compiledTemplate = Em.TEMPLATES["precompile"];
var temp_html = compiledTemplate({ name: 'World' });
console.log(temp_html); //Uncaught TypeError: Cannot read property 'push' of undefined
$("#tempdiv").html(temp_html);
</script>
我已经在命令提示符下载了npm handlebars编译器版本:
npm install handlebars@1.3.0 -g
在控制台中,把手COMPILER_REVISION即将进入4
Handlebars.COMPILER_REVISION -- 4
使用上述版本,我可以使用Handlebars作为
读取模板Handlebars.templates['test_temp'];
然后我从下面的软件包中安装了ember-precompile -
在命令提示符下安装为:
npm install ember-precompile
现在我无法使用Em.TEMPLATE [&#34; template_name&#34;]来阅读已编译的模板。
我已经包含并安装了ember,handlebars和ember-precompile的版本存在兼容性问题。
每个版本的哪个版本匹配并且可以读取已编译的模板。
答案 0 :(得分:0)
我总是遇到ember-precompile
没有更新的问题。幸运的是,您可以自己更新库。只需转到安装ember-precompile
的文件夹(对我来说,它是全局/usr/local/share/npm/lib/node_modules/ember-precompile
),然后替换vendor
文件夹中的库。最新版本使用Ember 1.2.0和Handlebars 1.1.2。只需用您需要的版本替换那些。 (你可能需要保留相同的名字,但我真的不记得了。)
另外,为什么要在页面中包含预编译Javascript文件?这违背了预编译的全部目的。