Ember.js: 公共属性放在哪里?

Ember.js: Where to put common properties?

我听说,有一天控制器会被弃用。所以我试图对所有东西都使用组件。

但是如果你要在整个应用程序中使用一些计算属性,你会在哪里实现它?

一般来说,我会使用一个应用程序控制器并将其放入其中。

最佳做法是什么?

您将建立一个服务并将其注入到任何需要的地方。

http://discuss.emberjs.com/t/services-a-rumination-on-introducing-a-new-role-into-the-ember-programming-model/4947

除非你说你有需要修饰多个不同模型的通用计算属性,否则你会使用混合。

http://emberjs.com/api/classes/Ember.Mixin.html

我认为服务就是您要找的。

查看以下内容:

http://www.hutchinson.io/ember-services-and-dependency-injection/

以下是我如何使用服务来存储应用程序配置(用户 permissions/roles、默认值等):

/app/services/configuration.js

import Ember from 'ember';

export default Ember.Service.extend({
    roles: ['Administrator', 'Manager', 'User', 'View-only'],
    // ...
});

/app/initializers/configuration-service.js

export function initialize(container, application) {
    application.inject('route', 'configuration', 'service:configuration');
    application.inject('controller', 'configuration', 'service:configuration');
}

export default {
    name: 'configuration-service',
    initialize: initialize
};

然后我像这样在控制器和路由中访问:

export default Ember.Controller.extend({
    allRoles: function() {
        return this.configuration.roles;
}).property();