Emberjs模板和路由

时间:2015-06-24 20:02:57

标签: javascript ember.js ember-cli

所以我有一个我在Emberjs建立的常规网站。现在我想为应用添加管理员。我面临的问题是该应用的标头位于application.hbs,但对于管理员,我希望标头不同。标题需要留在application.hbs,因为网址需要/about而不是user/about或者我可以创建的路线。我尝试将标题作为一个组件并将其添加到有效的路由,但由于标题从路由离开到路由,它会丢失webapp感觉。有没有办法让我不在管理员中扩展应用程序模板?

1 个答案:

答案 0 :(得分:0)

据我了解您的问题,您正在寻找具有管理和非管理路由的不同标头,而不将标头转换为组件。如果是这样,那么你可以通过在应用程序把手中使用一个标志来表示," isAdmin"。例如:

在application.hbs

{{#if isAdmin}}
    <h2>Header for Admin Route</h2>
    <button {{action "goToApp"}}> Go To Application </button>
    {{outlet "admin"}}
{{else}}
    <h2>Header for Application Routes</h2>
    <button {{action "goToAdmin"}}> Go To Admin Panel </button>
   {{outlet "app"}}
{{/if}}

这里&#34; isAdmin&#34;将是&#34; ApplicationController&#34;中的属性。并且,您可以在&#34;激活&#34;内部设置此标志。和#34;停用&#34;路线的处理者。

在路线/ admin.js

   activate: function () {
      this.controllerFor("application").set("isAdmin", true);
    },
   deactivate: function () {
     this.controllerFor("application").set("isAdmin", false);
   },
   renderTemplate: function () {
    this.render({
      outlet: "admin"
    });
  }

使用JSBIN:http://jsbin.com/yilipa/edit?html,js,output

我希望这符合您的要求。如果我误解了你的问题,请纠正我。