我正在尝试将依赖项注入我的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);
}
);
}
});
感谢您提出的所有帮助/意见。
答案 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();