使用多个子应用程序路由单个页面应用程序

时间:2014-01-25 18:52:43

标签: ember.js

我在主应用程序“shell”中有两个不同的应用程序。

主应用程序处理登录并包含子应用程序的插座,例如

<header>
{{outlet}}
<footer>

子应用程序只是具有自己的命名空间,路由等的标准ember应用程序。

我希望能够像这样将它们连接起来

MainApp.Router.map(function() {
  this.route("login");
  this.route("sub1", SubApp1.Router);
  this.route("sub2", SubApp2.Router);
});

/login -> MainApp.LoginRoute
/sub1/foo -> SubApp1.FooRoute
/sub2/foo/bar -> SubApp2.FooBarRoute

这可能吗?

1 个答案:

答案 0 :(得分:0)

这是一个有趣的想法,但这种方式不支持嵌套应用程序。一次只能使用1个路由器。您可以执行单个应用程序并共享路由器,但是您必须确保所有内容都位于相同的命名空间中,或者使用某种依赖注入来确保所有依赖项都可用。

SubApp1.MyRouting = function() {
  this.route("foo");
}

SubApp2.MyRouting = function() {
  this.route("bar");
}

在MainApp中

MainApp.Router.map(function() {
  this.route("login");
  this.route("sub1", SubApp1.MyRouting);
  this.route("sub2", SubApp2.MyRouting);
});

如果SubApp在页面中是独立且单独的

SubApp1.Router.map(SubApp1.MyRouting);