以前、ここで同様の質問をしました Ember モデルへの依存関係の注入、しかし今私の問題は、「ember-model」モデルへの依存関係の注入に関するものであると信じています。
を設定しても、Ember.MODEL_FACTORY_INJECTIONS = true
で構築されたモデルに deps を注入できないようですEmber.Model
。
私はjsbin http://emberjs.jsbin.com/yizoyozu/4/edit?html,js,console,outputを作成しました。これは、モデルではなく、ルート、ビュー、およびコントローラーに対して機能するインジェクションを示しています。
コードは次のようなものです。
Ember.MODEL_FACTORY_INJECTIONS = true;
App = Ember.Application.create();
App.initializer({
name: 'config',
initialize: function(container) {
App.deferReadiness();
container.register('app:config', {foo: 'bar', baz: 'boom'}, {instantiate: false});
container.injection('model', 'appConfig', 'app:config');
container.injection('controller', 'appConfig', 'app:config');
container.injection('route', 'appConfig', 'app:config');
container.injection('view', 'appConfig', 'app:config');
App.advanceReadiness();
}
});
App.Router.map(function() {
// put your routes here
});
App.Colors = Ember.Model.extend({
color: Ember.attr(),
init: function() {
this._super();
console.log('inside aModel', this.appConfig); // does this not work?
}
});
App.Colors.load([
{id: 1, color: 'red'}
]);
App.IndexRoute = Ember.Route.extend({
model: function() {
console.log('inside aRoute', this.appConfig);
return App.Colors.find(1);
}
});
App.IndexController = Ember.Controller.extend({
init: function() {
this._super();
console.log('inside aController', this.appConfig);
}
});
以下のテンプレートで
<script type="text/x-handlebars">
<h2> Welcome to Ember.js</h2>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
<ul>
<li>model.color = {{model.color}}</li>
<li>model.appConfig = {{model.appConfig}}</li> <!-- I won't print model.appConfig -->
<li>view.appConfig.foo = {{appConfig.foo}}</li>
</ul>
</script>
助けてくれてありがとう!