我只是想知道在ember-cli
应用中放置网站相关设置的最佳位置是什么,您可以在任何路由/控制器上访问,因此可能在全局命名空间中。
按网站设置我的意思如下:网站名称,网站标语,默认头像目录,默认个人资料封面目录等。
我知道我可以创建一个mixin,但我觉得有更好的方法,可能在environment.js
文件中?我对ember-cli
非常陌生,这就是为什么我可能错过了一些添加全局设置的明显方法。
如果有人建议在何处添加这些类型的设置,请明确指示如何添加它并在控制器/路由器中引用它以及为什么您认为这是最佳位置(或唯一的地方) )。
答案 0 :(得分: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');
将服务滥用作为您希望在整个应用程序中共享的数据的转储点很容易。谨慎使用它们。特别是,默认的头像目录可能更适合作为模型属性。