我正在尝试渲染我的应用程序模板,这个模板变得非常复杂,因此我想将其拆分为单独的<script type="text/x-handlebars">
我想我想使用{{view}}助手,但我不知道。假设我有这个:
<script type="text/x-handlebars" data-template-name="application">
<div id="wrapper" class="clearfix">
<hgroup>
<header>
<div class="logo"></div>
<h1 id="facilityName">{{facilityName}}</h1>
<div id="sessionInfo">
<a id="userName">{{user}}</a>
<a id="logOut" href="../logout">log out</a>
</div>
</header>
</hgroup>
{{view App.breadcrumbsView}}
</div>
</script>
我想在上面的一个模板中加载下一个模板:
<script type="text/x-handlebars" id="breadcrumbs">
<div id="breadcrumbs">
<p>
<a href="{{breadcrumbObj.page}}">Network</a>
{{#each breadcrumbObj}}
<span>></span><a {{bindAttr href="link"}}>{{name}}</a>
{{/each}}
</p>
</div>
</script>
现在我正在尝试使用我的app.js
中的代码执行此操作App.breadcrumbsView = Ember.View.create({
templateName: 'breadcrumbs',
breadcrumbObj: Util.breadcrumbs()
});
这不起作用我得到了未捕获错误:断言失败:无法在路径“App.breadcrumbsView”找到视图
由于
答案 0 :(得分:1)
我认为您使用App
关键字宣布了var
。所以它在车把模板中不可见。
更改此
var App = Ember.Application.create();
到此
App = Ember.Application.create();
创建视图时,您必须使用extend
而不是create
。因为ember将处理对象生命周期,如:创建,销毁,添加和删除绑定等。
答案 1 :(得分:1)
@Marcio是对的,你应该.extend()
让框架通过请求自动为你创建它。此外,当您扩展时,最佳做法是使用大写的名称,如App.BreadcrumbsView
。
请在此处查看demo如何以正确的方式正确执行此操作。
希望它有所帮助。