将依赖项注入Ember模型

时间:2014-06-05 19:42:20

标签: javascript ember.js

我正在尝试将依赖项注入我的Ember模型。

https://github.com/emberjs/ember.js/issues/3670,声明这是禁用的。在指向https://github.com/stefanpenner/ember-cli/blob/master/blueprint/app/app.js#L4的链接后,演示了如何启用MODEL_FACTORY_INJECTIONS,这在理论上应该允许我将依赖项注入到我的模型中,但是我没有运气。

如果没有这个解决方案,除了将它转储到应用程序的命名空间(即App.ImAGlobalconfig`)之外,还有其他方法可以将一个应用程序范围的全局单例对象的ref注入到Ember.Model中吗? / p>

供参考,这是我正在处理的初始化器

App.initializer({
  name: 'preload',
  initialize: function(container/*, application*/) {
    App.deferReadiness();

    Ember.$.ajax({
      url: CONFIG.configURL,
      dataType: 'json',
      context: this
    }).done(
      function(json/*,status, request*/) {
       var appConfig;

        // ...

        container.register('app:config', appConfig, {instantiate: false});
        container.injection('controller', 'appConfig', 'app:config');
        container.injection('route', 'appConfig', 'app:config');
        container.injection('view', 'appConfig', 'app:config');
        container.injection('model', 'appConfig', 'app:config'); // I don't work!

        App.advanceReadiness();
      }
    ).fail(
      function(status, request, error) {
        console.log('Unable to load config with: ' + error);
      }
    );
  }
});

感谢您提出的所有帮助/意见。

1 个答案:

答案 0 :(得分:2)

模型注射确实有效:

Ember.MODEL_FACTORY_INJECTIONS = true;    
App = Ember.Application.create();

App.initializer({
  name: 'model-injection',

  initialize: function(container, application) {

    var cfg = {version: '1'};
    container.register('app:config', cfg, {instantiate: false});


    container.injection('model', 'cfg', 'app:config');
    App.advanceReadiness();
  }
});

App.deferReadiness();

http://emberjs.jsbin.com/lomiy/1/edit