2014-11-12 7 views
5

umgewandelt Nur meine App zu Ember-cli, aber ich weiß nicht, wie Ember.Application.register verwenden mehr, weil register nicht verfügbar zu sein scheint, wenn Application mit extend gestartet wird statt create .Dependency Injection ohne Singleton in glut-cli

import Ember from 'ember'; 
import App from 'myapp/app'; 

var AdminMyController = Ember.ObjectController.extend({ 
}); 

// THROWS ERROR HERE BECAUSE register isn't, uh...registered? 
App.register('controller:adminMyController', AdminMyController, { singleton: false }); 

export default AdminMyController; 

Zuvor, weil App eine globale war, konnte ich dies direkt in der gleichen Klasse registrieren.

Muss ich alle Registeraufrufe an einen Initialisierer verschieben, damit ich Zugriff auf die App-Instanz bekomme?

Antwort

1

Ich glaube, ein Initialisierer würde dies für Sie tun. Sie müssen einen Ordner initializers in Ihrem App-Verzeichnis erstellen (auf derselben Ebene wie Controller, Vorlagen usw.). Diese Datei sollte dorthin gehen.

import Ember from 'ember'; 

var AdminMyController = Ember.ObjectController.extend({ 
    ... 
}); 

export default { 
    name: 'adminMyController', 
    initialize: function (container, application) { 
     container.register('controller:adminMyController', AdminMyController, {singleton: false}); 
    } 
}; 
+0

Ja, das war meine Lösung am Ende. Es wäre schöner, sich mit dem Container in der fraglichen Datei zu registrieren, aber ich bin mir immer noch nicht sicher, wie ich das ohne GLOBALS machen soll. – typeoneerror