与ember-precompile,ember.js和handlebars.js版本兼容的问题

时间:2014-05-01 07:11:42

标签: javascript templates ember.js handlebars.js

我无法读取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 -

  

https://www.npmjs.org/package/ember-precompile

在命令提示符下安装为:

npm install ember-precompile

现在我无法使用Em.TEMPLATE [&#34; template_name&#34;]来阅读已编译的模板。

我已经包含并安装了ember,handlebars和ember-precompile的版本存在兼容性问题。

每个版本的哪个版本匹配并且可以读取已编译的模板。

1 个答案:

答案 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文件?这违背了预编译的全部目的。