" template.buildRenderNodes不是一个函数"最新的Ember发布

时间:2015-08-16 14:52:21

标签: templates ember.js handlebars.js

HTML和JS (非缩小版)

的index.html

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
    </head>

    <body>
        <!-- <ember> -->
        <script type="text/javascript" src="assets/lib/jquery/jquery.min.js"></script>
        <script type="text/javascript" src="assets/lib/ember.js/ember.min.js"></script>
        <!-- </ember> -->

        <!-- <app> -->
        <script type="text/javascript" src="assets/js/templates.min.js"></script>
        <script type="text/javascript" src="assets/js/app.min.js"></script>
        <!-- </app> -->
    </body>
</html>

app.min.js

window.App = Ember.Application.create();

templates.min.js (模板使用gulp-ember-templates编译)

Ember.TEMPLATES["index"] = Ember.Handlebars.template({"compiler":[6,">= 2.0.0-beta.1"],"main":function(depth0,helpers,partials,data) {
  return "";
},"useData":true});

描述

在浏览器中打开页面时,会出现以下错误:

Uncaught TypeError: template.buildRenderNodes is not a function

我使用的是Ember和jQuery的最新版本。在搜索此错误时,我发现人们在升级到Ember 1.13时遇到了这个问题,但是我使用的是Ember 2.0.0并没有故意调用任何弃用的方法,实际上我只是使用了我的生成的模板(空的,因为我还没有放任何内容;见上文)和Ember.Application.create()

我还发现Ember在包含ember-template-compiler.js并保持模板在HTML中未编译时使用(使用Handlebars-script-tags)。

问题

这是Ember中的错误还是我错过了什么?它似乎应该工作。

1 个答案:

答案 0 :(得分:1)

您使用的是使用新Handlebars兼容模板引擎HTMLBars的Ember版本。为了确保您的模板使用这种新语法进行编译,您需要将isHTMLBars: true选项添加到gulp-ember-templates的Gulp任务中,可以找到更多格式in the README