2013-11-08 2 views
1

Я использую данные ember-данных, и мне нужно вставить зависимость в адаптер данных магазина. Здесь приведен упрощенный код:Как вставить зависимость в адаптер магазина

window.App = Ember.Application.create({ 
    ready: function() { 
    this.register('database:current', this.Database); 

    // this works fine, this.get('database') inside routes works ok 
    this.inject('route', 'database', 'database:current'); 

    // but this does not work 
    this.inject(App.SqliteAdapter, 'database', 'database:current'); 

    // also tried this: 
    // this.inject('dataAdapter', 'database', 'database:current'); 
    } 
}); 

App.Store = DS.Store.extend({ 
    revision: 13, 
    adapter: App.SqliteAdapter 
}); 

App.SqliteAdapter = DS.Adapter.extend({ 
    find: function(store, type, id) { 
    var db = this.get('database'); 
    console.log(db); // this is undefined 
    } 
}); 

App.Database = Ember.Object.extend({}); 

Почему этот код не работает?

Версии:

DEBUG: Ember  : 1.1.2 
DEBUG: Ember Data : 1.0.0-beta.3 
DEBUG: Handlebars : 1.0.0 
DEBUG: jQuery  : 2.0.3 

ответ

0

Вы можете закачивать в адаптере, как это:

this.inject('adapter', 'database', 'database:current'); 

Вы можете увидеть некоторые более впрыснуть примеры в my answer к ember register inject singleton.

+0

Все еще не работает. Может быть, из-за более новых версий ember-данных? – galymzhan

+0

Ну, вы используете довольно недавнюю версию EmberData. Почему вы указываете версию 13 в своем магазине? – gerry3

+0

Я скопировал это откуда-то. Мне даже нужно указывать ревизии? – galymzhan

Смежные вопросы