Ich versuche, ein Ember Dienst in ein Ember Objekt zu injizieren, aber halten den folgenden Fehler erhalten:Injizieren Sie einen Dienst in einem Ember Object [kein Ember Controller]
"Assertion Failed: Attempting to lookup an injected property on an
object without a container, ensure that the object was instantiated
via a container."
Mein Code sieht im Wesentlichen so etwas wie die folgende:
const Model = Ember.Object.extend({
store: Ember.inject.service(),
destroyRecord() {...},
serialize() {...},
deserialize() {...},
});
let newModel = Model.create();
newModel.get('store');
Hinweis: es funktioniert, wenn ich den Dienst in einen Controller zu injizieren, aber kein Objekt. Hab kein Glück gehabt, herauszufinden, wie man das Objekt mit dem Ember-Container registriert.
Also, um zu klären, Registrierung von Objekten, die nicht bereits Teil des Ember-Lebenszyklus (in meinem Fall, Modelle), ist mit dem Initialisierer gemacht. Um die Modellklasse an anderer Stelle in der App aufzurufen, rufen Sie 'Ember.getOwner (this) .lookup ('object: model')' auf, yeah? (Der Suchaufruf ruft offensichtlich die Model-Klasse zurück und ruft '.create()' darauf auf). In meinem Fall funktionierte das Importieren von Dateien über "Import Model from" path/to/model; ganz einfach über alle wichtigen Dateien, da ich immer noch mit statischen Methoden interagieren konnte. –
Kurz gesagt, ja. Sie müssen sie nicht wirklich registrieren, es sei denn, Sie möchten, dass Ember den Lebenszyklus verwaltet, also ist 'Importieren' in Ordnung, wie Sie sagten. Wenn Sie näher diskutieren wollen, ping mich in der Slack-Gruppe! – locks
Tatsächlich, nach einem anderen Blick, realisiere ich einfach über 'Import Model von' path/to/model 'importieren; 'wowo eine Suche aus einem bereits registrierten Objekt über' Ember.getOwner (this) .lookup (...) 'wirft immer noch den gleichen Fehler auf. Ich werde mich auf Slack freuen, wenn ich mich über mich aufrege. –