2015-09-04 84 views
0

我試圖在不同的控制器之間共享一個Ember對象,以便在通過應用程序時使用更多信息「裝飾」它。在使用ember-cli的控制器之間共享一個Ember對象

在一個簡單的餘燼的應用程序,我只想做:

App.UserDetails = Ember.Object.extend({name: 'Darryl', age: 26 }); 

App.DetailsRoute = Ember.Route.extend({ 
    model: function() { 
    return App.UserDetails; 
    } 
}); 

App.AccountRoute = Ember.Route.extend({ 
    model: function() { 
    return App.UserDetails; 
    } 
}); 

,但我看不到我會在灰燼CLI組織這次

感謝

回答

2

您應該使用數據持久庫像Ember Data,因爲它是爲諸如存儲用戶詳細信息之類的東西而設計的,並且有大量信息如何做到這一點,但您詢問如何共享對象:

您可以使用Ember.Service

細節服務:

import Ember from 'ember'; 

export default Ember.Service.extend({ 
    name: 'Darryl', 
    age: 26 
}); 

休息:

App.DetailsRoute = Ember.Route.extend({ 
    details: Ember.inject.service(), 
    model: function() { 
    return this.get('details'); 
    } 
}); 

App.AccountRoute = Ember.Route.extend({ 
    details: Ember.inject.service(), 
    model: function() { 
    return this.get('details'); 
    } 
}); 
+1

不確定Ember Data與他的問題有什麼關係。 Ember服務+1。這正是他們所設計的。 – GJK

+0

它有,因爲我認爲服務是爲其他東西而設計的,Ember Data是用於在應用程序中存儲數據的。另外,我猜也許有人可以在容器中使用依賴注入。 –

+1

Ember Data專爲_persisting_數據設計,而不是存儲它。如果他想存儲的數據是短暫的(它看起來可能是這樣),那麼Ember服務就是最好的工具。 – GJK

-1

同樣的事情可以這樣做,

//userdetails.js 
export default Ember.Object.create({ 
    name: 'Darryl', 
    age: 26 
}); 

在你的路線,

//details.js 
import obj from 'path/userdetails'; 
export default Ember.Route.extend({ 
    model : function(){ 
    return obj; 
    } 
}); 

//account.js 
import obj from 'path/userdetails'; 
export default Ember.Route.extend({ 
    model : function(){ 
    return obj; 
    } 
}); 
+0

請說明downvote的原因,所以我可以糾正我的知識。 – AcidBurn