2013-03-08 46 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