2013-03-08 68 views
4

我们正在构建的应用程序将由几个较小的子应用程序组成。Ember.js:非标准路由,需要输入

/ <-- main application 
/accounts <-- sub app 
/reports <-- sub app 
/contacts <-- sub app 

我们将利用Django路由将用户引导到每个子应用程序。所以当用户点击网站的主页时,它是纯粹的Django。当他们点击账户时,它是纯粹的Django。当用户登陆每个子应用程序页面时,Ember将接管并从那里开始。

当用户访问该帐户subapp我转换用户到账户路线:

Social.IndexRoute = Ember.Route.extend({ 
    redirect: function() { 
     this.transitionTo('accounts'); 
    } 
}); 

造成这种情况的URL看起来像这样:

/accounts/#/accounts/27 

我想这样做的是负载当用户访问基本上是索引页面时,记录帐户信息。这包含属于用户的帐户列表。当他们选择一个帐户我想链接到帐户路线:

/accounts/#/account/27 

我该如何去做这件事?

+1

你可以为你的路由器映射添加代码吗?也许你可以用这样的路径定义“帐户”路线:'this.route('account',{path:'account /:account_id'});' – MilkyWayJoe 2013-03-08 21:54:28

+0

是的。这正是我所做的,它的工作。在开始构建应用程序时,这并不明显。现在可以尽早重写大部分代码。投了你,谢谢。 – commadelimited 2013-03-08 23:01:51

回答

2

您可以在路由器上设置rootURL,然后应用程序将愉快地生活在一个子目录中。

Social.Router.map(function() { 
    this.resource('accounts'); 
}); 

Social.Router.reopen({ 
    location: 'hash', 
    rootURL: '/accounts' 
}); 

Social.IndexRoute = Ember.Route.extend({ 
    redirect: function() { 
    this.transitionTo('accounts'); 
    } 
}); 
+0

谢谢zaius,我会试试看。 – commadelimited 2013-03-21 16:09:44