将参数传递给ember addon源代码的最佳方法

时间:2014-12-21 15:21:11

标签: ember.js ember-cli

TL; DR

是否可以将插件的index.js文件中的选项传递给插件的Ember应用程序?

更多细节

Ember CLI插件允许您通过设置Brocfile.js中的选项将选项传递到插件。

var EmberApp = require('ember-cli/lib/broccoli/ember-app');

var app = new EmberApp({
  myAddon: {
    enabled: false // TODO - Change when CLoudfront is implemented
  },
});

然后,您可以在插件的index.js文件中访问这些选项,如下所示:

module.exports = {
  name: 'my-addon',

  included: function(app) {
    var options = app.options.myAddon;
  }
}

但是,如果我想在Ember组件或视图或插件中的其他类中使用这些选项,该怎么办?例如,一个组件:

import Em from 'ember';

export default Em.Component.extend({

  doSomething: function() {
    if (this.get('options.enabled')) {
      // Then do something
    }
  },

});

是否可以将插件的index.js文件中的选项传递给插件的Ember应用程序?

请注意,我知道你可以将参数传递给模板中的组件,但这不是这个问题的重点。感谢。

1 个答案:

答案 0 :(得分:3)

我认为您要完成的工作最好使用config/environment实现。

您可以将自己的选项添加到地址config/environment.js file。此对象将与您的应用程序config/environment.js合并。

module.exports = function(/* environment, appConfig */) {
  return {
    myaddon {
      enabled: true
    }
  };
};

或者,如果您感觉时髦,可以覆盖index.jsaddons config hook的默认行为以手动添加选项。但应考虑将快乐路径添加到config/environment.js

然后,您可以在组件中导入配置:

import config from '../config/environment';

如果您还需要将选项添加到您的应用实例中。您可以在APP的{​​{1}}属性下添加选项。 APP属性的内容将添加到应用程序实例中。在您的插件中config/environment.js放置:

config/environment.js