確かにできますが、少しジャグリングが必要になる場合があります。何を注入するか、どこに注入するかを決定するロジックを定義できます。デフォルトの規則に依存する場合は、このオブジェクトを手動で見つけて、注入時にフルネームを使用できます。
別のオプションは、Mixin が含まれているかどうかに関係なく、ルートごとに実行することです。Inject は完全な名前を必要としません。`App.inject('route', ...) を呼び出すと、デフォルトで機能します。
オプション 1 を使用すると、次のようになります。基本的に、ミックスインを実装するルートを見つけて、それらすべてに注入する必要があります。
var guidForMixin = Ember.guidFor(App.YourMixin);
var routesToInjectInto = Ember.keys(App).filter(function (key) {
var route, mixins;
if (key.match(/Route$/))
route = App[key];
mixins = Ember.meta(route).mixins;
if (mixins) {
!!mixins[guidForMixin];
}
return false;
);
routesToInjectInto.each( function (key) {
var keyForInjection = Ember.decamelize(key);
App.inject('route:' + keyForInjection, 'sessionManager', 'session_manager:main');
});
また、イニシャライザ内でこれらすべてを行うことをお勧めしますが、それは些細な考慮事項かもしれません。
Ember.onload('Ember.Application', function(Application) {
Application.initializer {
name: "sessionManager"
initialize: function (container, application) {
// do the above here. Refer to app as the namespace instead of App.
// use the container instead of App.__container__ to register.
};
});