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