2014-07-12 31 views
0

我只是想知道在ember-cli應用程序中放置網站相關設置的最佳位置是什麼,您可以在任何路由/控制器上訪問它,很可能在全局名稱空間中訪問。Ember-CLI應用程序中的常規站點相關設置?

通過站點設置我的意思是以下幾點:網站名稱,網站的口號,默認的頭像目錄,默認的配置文件覆蓋目錄等

我知道我可以創建一個mixin,但我覺得有一個更好的方法,可能在environment.js文件中?我對ember-cli非常陌生,這就是爲什麼我可能錯過了添加這些全局設置的一些明顯方法。

如果有人對如何添加這些類型的設置有什麼建議,請指出如何添加它並將其引用到控制器/路由器以及爲什麼您認爲這是最好的地方(或唯一的地方)。

+0

http://stackoverflow.com/questions/23718384/where-do-you-place-a-simple-variable-in-the-ember-app-kit-file-structure-so-it-c/23729225 #23729225這也適用於ember-cli – blessenm

回答

3

聽起來像服務的候選人。嘗試運行

ember g service settings 

從您的項目的根目錄。現在,您可以共享的屬性添加到您的新服務:

// app/services/settings.js 
import Ember from 'ember'; 

export default Ember.Object.extend({ 
    appName: 'my-app' 
}); 

的初始化還將爲您創建,它控制你怎麼能在你的應用程序訪問您的服務:

// app/initializers/settings.js 
export default { 
    name: 'settings', 
    initialize: function(container, app) { 
    app.inject('route', 'settings', 'service:settings'); 
    } 
}; 

,你可以默認情況下,您的服務可用於所有路線。訪問這樣的:

// app/routes/application.js 
import Ember from 'ember'; 

export default Ember.Route.extend({ 
    activate: function() { 
     this.get('settings.appName'); // my-app 
    } 
}); 

爲了使控制器提供服務,只需注入在初始化服務:

app.inject('controller', 'settings', 'service:settings'); 

它可以容易濫用服務的傾銷地您想在整個應用程序中共享的數據。謹慎使用它們。特別是,像默認頭像目錄可能更適合作爲模型屬性。

+0

默認的頭像目錄有什麼樣的模式?我一直認爲這些類型的設置非常靜態,並且幾乎在任何地方都需要訪問。 – user1952811

+0

不知道更多關於您的應用程序很難說。用戶的頭像是?在那種情況下,用戶模型。 –

+0

但這是一個靜態的東西,爲什麼它應該持續在所有的用戶模型? – user1952811

相關問題