Javascript Emberjs模板和路由

Javascript Emberjs模板和路由,javascript,ember.js,ember-cli,Javascript,Ember.js,Ember Cli,所以我有一个我在Emberjs中建立的常规网站。现在我想添加一个管理员到应用程序。我面临的问题是,应用程序的标题位于application.hbs中,但对于管理员,我希望标题不同。标头需要保留在应用程序中。hbs因为URL需要是/about而不是user/about或我无法创建的任何路由。我尝试将标题作为一个组件,并将其添加到有效的路由中,但由于标题从一条路由转到另一条路由,因此它失去了webapp的感觉。我有没有办法不在admin中扩展应用程序模板?据我所知,您的问题是,您希望在不将标头转换为

所以我有一个我在Emberjs中建立的常规网站。现在我想添加一个管理员到应用程序。我面临的问题是,应用程序的标题位于
application.hbs
中,但对于管理员,我希望标题不同。标头需要保留在
应用程序中。hbs
因为URL需要是
/about
而不是
user/about
或我无法创建的任何路由。我尝试将标题作为一个组件,并将其添加到有效的路由中,但由于标题从一条路由转到另一条路由,因此它失去了webapp的感觉。我有没有办法不在admin中扩展应用程序模板?

据我所知,您的问题是,您希望在不将标头转换为组件的情况下,为admin和非admin路由提供不同的标头。如果是这样,那么您可以通过在应用程序手柄中使用一个标志来实现它,比如“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}}
工作JSBIN:

我希望这能满足你的要求。如果我误解了你的问题,请纠正我

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