2013-11-19 3 views
2

У меня есть следующий инициализатором, где я хочу привнести в магазине уголек-данных в определенный тип компонента:впрыснуть экземпляр магазина в определенный тип компонента

Я пытался использовать

application.inject

в инициализаторе, но я не мог заставить его работать. Я взломал вокруг него с кодом ниже, но я не понимаю, почему комментируемого код не будет работать:

Ember.onLoad('Ember.Application', function(Application) { 
    Application.initializer({ 
    name: "injectStoreIntoAutosuggest", 
    after: "store", 
    initialize: function(container, application) { 
     window.AutoSuggestComponent.reopen({ 
     store: container.lookup('store:main') 
     }); 

     // FIXME: why does this not work? 
     // application.inject('component:autoSuggest', 'store', 'store:main'); 
    } 
    }); 
}); 

Причина мне нужно в магазин, потому что у меня есть this компонент, который имеет этот API:

{{auto-suggest source=App.Employee destination=controller.dsChosenEmployees searchPath="fullName" minChars=0}} 

Я думаю, что хорошо иметь возможность просто указать модель данных ember-данных и быть хорошим, чтобы идти.

Раньше вы могли бы сделать:

не App.Employee.find

Но с последними Ember-данных это уже не вариант.

+0

технически это должно быть «компонент: автоматический предложить», но это не то, почему она не работает, то, как представляется, что-то с тем, что он расширяется, и он не создается с помощью инъекции, я все еще погружаюсь в код ... – Kingpin2k

+0

И похоже, что компонент создается до инициализации ocurrs, поэтому создание этих зависимостей никогда не делает этого в класс. Я не совсем уверен, как правильно это исправить. – Kingpin2k

+0

@ kingpin2k просто 'application.inject ('component: auto-suggest', 'store', 'store: main');' работал для меня. Я не понимаю, какие дополнительные проблемы вы описываете. –

ответ

4

Ваша проблема с именем впрыска. Изменение component:autoSuggest в component:auto-suggest и будет работать:

Ember.onLoad('Ember.Application', function(Application) { 
    Application.initializer({ 
    name: "injectStoreIntoAutosuggest", 
    after: "store", 
    initialize: function(container, application) {  
     application.inject('component:auto-suggest', 'store', 'store:main'); 
    } 
    }); 
}); 

Вот скрипка с этим работает http://jsfiddle.net/marciojunior/6VEks/

+0

Вот пример, который я сделал с использованием статических данных: http://emberjs.jsbin.com/vamahonuku/1/edit?js,output –

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