Sto cercando di iniettare un servizio di Ember in un oggetto Ember, ma continuo a ricevere il seguente errore:Iniettare un servizio in un oggetto Ember [non è un controller Ember]
"Assertion Failed: Attempting to lookup an injected property on an
object without a container, ensure that the object was instantiated
via a container."
mio codice è essenzialmente qualcosa di simile al seguente:
const Model = Ember.Object.extend({
store: Ember.inject.service(),
destroyRecord() {...},
serialize() {...},
deserialize() {...},
});
let newModel = Model.create();
newModel.get('store');
Nota: funziona se iniettare il servizio in un controller, ma non un oggetto. Non ho avuto fortuna nel cercare di capire come registrare l'Oggetto con il contenitore Ember.
Quindi, per chiarire, la registrazione di oggetti che non fanno già parte del ciclo di vita di Ember (nel mio caso, i modelli), viene eseguita con l'inizializzatore. Per recuperare la classe del modello altrove nell'app, chiama 'Ember.getOwner (this) .lookup ('object: model')', yeah? (la chiamata di ricerca apparentemente entrambi recupera la classe Model e chiama '.create()' su di essa). Nel mio caso, semplicemente importando nella parte superiore di tutti i file necessari tramite 'import Model da 'path/to/model;' ha funzionato altrettanto bene, dato che potevo ancora interagire con i metodi statici. –
In breve, sì. Non hai davvero bisogno di registrarli a meno che tu non voglia che Ember gestisca il ciclo di vita, quindi "import" va bene come hai detto tu. Se vuoi discutere in modo più dettagliato, esegui il ping nel gruppo Slack! – locks
in realtà, dopo aver dato un'altra occhiata, realizzo semplicemente importando tramite 'import Model da' path/to/model '; 'w/o facendo una ricerca all'interno di un oggetto già registrato tramite' Ember.getOwner (this) .lookup (...) 'solleva ancora lo stesso errore. Raggiungerò Slack una volta che avrò preso coscienza di me. –