2015-04-26 16 views
6

Ho provato a iniettare lo store dall'inizializzatore senza successo, quindi utilizzo la ricerca su init nel mio servizio, ma non mi piace troppo, preferirei mantenere le cose separate e mettere l'iniezione nella inizializzazione ...come iniettare il negozio in servizio ember.js

Ember: 1.11.1

Ember dati: 1.0.0-beta.16.1

jQuery: 1.11.2

non funziona: Initializer

//app/initializers/initializer-store.js 
export default { 
    name: 'initializer-store', 
    after: 'store', 

    initialize: function(container, application) { 
    application.inject('service:mtg-level-service', 'store', 'store:main'); 
    } 
}; 

LAVORO: Servizio

//app/services/mtg-level-service.js 
import Ember from 'ember'; 

export default Ember.Service.extend({ 
    availableIn: ['controllers', 'routes'], 
    store: null, 

    init: function() { 
    this._super(); 
    this.set('store', this.container.lookup("store:main")); 
    } 
}); 
+0

Oh, e potrebbe aver bisogno di essere eseguito prima di inizializzazione il servizio, si potrebbe avere una condizione di gara lì. – Kingpin2k

+0

Proverò a verificare che grazie –

risposta

11

Come di Ember v1.10:

import Ember from 'ember'; 

export default Ember.Service.extend({ 
    store: Ember.inject.service('store') 
}); 
+4

nota che in quel contesto è 'this.get ('store')' invece di 'this.store' – andorov

+0

come si fa all'interno di un test di integrazione? ** this.inject.service ('store') ** è null – SuperUberDuper

Problemi correlati