无法在Ember.js中获取要渲染的模板部分

时间:2012-04-16 23:11:42

标签: ember.js handlebars.js

我遇到一些问题让Ember.js拿起并渲染一个把手模板文件。我在浏览器的调试控制台中收到以下错误:

  

错误:<(Welcome.LoginView的子类):ember166> - 无法找到模板“login_view”。

我在app.js文件中的emberjs代码中有以下代码:

Welcome = Ember.Application.create();

Welcome.LoginView = Ember.View.extend({
  templateName: 'login_view'
});

我的index.html文件中还有以下代码段:

<script type="text/x-handlebars">
  {{view Welcome.LoginView}}
</script>

最后,相对于app.js文件,我有文件templates / login_view.handlebars,其中包含要呈现的模板内容:

<form class="form-inline">
  <fieldset>
    <input type="text" name="email" placeholder="email address">
    <input type="password" name="password" placeholder="password">
    <button class="btn btn-primary" type="submit">Sign In</button>
    <!-- ... -->
  </fieldset>
</form>

错误似乎表明它无法找到车把模板。当我查看生成的HTML时,我在页面上看不到上面的表单。

有人能说清楚我做错了吗?

1 个答案:

答案 0 :(得分:4)

根据您的问题,我假设您没有使用一些为您预编制把手模板的工具。 Ember在Ember.TEMPLATES数组中查找模板 - 它不会自动查找位于templates/且以.handlebars结尾的模板。如果没有为您编译模板的构建步骤,您必须自己完成此操作。

这可能听起来很复杂,但它很简单:

Ember.TEMPLATES["login_view"] = Ember.Handlebars.compile('TEMPLATE CODE');

您必须确保此模板定义出现之前才能使用它。


另一种解决方案是将您的模板内嵌到index.html并在脚本标记中添加data-template-name="login_view"属性:

<script type="text/x-handlebars" data-template-name="login_view">
  <form class="form-inline">
    <!-- ... -->
  </form>
</script>

但是,如果您的项目有很多模板,那么我建议您采用构建工具为您做第一个选项。


相关问题:Is it possible to load a Handlebars template via Ajax?