0

我正在尝试渲染我的应用程序模板,该模板变得非常复杂,因此我想将其拆分为单独<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>&#62;</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”处找到视图

谢谢

4

2 回答 2

1

我认为你声明了你的Appusingvar关键字。所以它在车把模板中不可见。

改变这个

var App = Ember.Application.create();

对此

App = Ember.Application.create();

并且您必须在创建视图时使用extend而不是。create因为 ember 将处理对象生命周期,例如:创建、销毁、添加和删除绑定等。

于 2013-08-09T17:06:26.587 回答
1

@Marcio 是对的,您应该.extend()让框架根据请求自动为您创建它。此外,当您扩展时,最佳做法是使用大写名称,例如App.BreadcrumbsView.

请参阅此处的演示,它是如何以这种方式正确呈现的。

希望能帮助到你。

于 2013-08-09T17:12:28.200 回答