我遇到一些问题让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时,我在页面上看不到上面的表单。
有人能说清楚我做错了吗?
答案 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>
但是,如果您的项目有很多模板,那么我建议您采用构建工具为您做第一个选项。