Существует несколько способов сделать это.
(1) Добавьте объект к вашему контроллеру, который возвращает необходимые записи для вашего раскрывающегося списка.
http://emberjs.jsbin.com/AqimiFI/4/edit
setupController: function(controller, model) {
this._super(controller, model);
// set an empty array
controller.set('states', []);
this.get('store').find('state').then(function(states){
//once the states are resolved set the states to the records
controller.set('states', states);
});
}
(2) В какой-то момент в приложении (там, где это представляется целесообразным) в один из ваших маршрутов создать контроллер для элементов в вопрос и установить модель этого контроллера к элементам , затем используйте нужды. Я предпочитаю этот метод, потому что вы можете использовать этот контроллер по всему приложению добавить логику к нему и он совместно и т.д ...
http://emberjs.jsbin.com/AqimiFI/5/edit
setupController: function(controller, model) {
this._super(controller, model);
var states = this.controllerFor('states');
states.set('model', this.get('store').find('state'));
}
App.ApplicationController = Ember.ArrayController.extend({
needs:['states'],
states:function(){
return this.get('controllers.states');
}.property('controllers.states')
});
В этом примере я создал контроллер состояний в маршрут приложения. Это не привязывает его к контроллеру/маршруту приложения вообще, это был просто крючок на ранней стадии, что я мог бы использовать для создания контроллера для хранения данных.
Для доступа к контроллеру с другого контроллера вы должны указать, что он вам нужен (требуется: ['states']).
Свойство состояний возвращает контроллер состояний (важно помнить, что контроллер массива и контроллеры в целом в ember - только декораторы на своих моделях). Ember будет проксировать все вызовы get/set до модели (если они не существуют на контроллере). Поэтому, когда я возвращаю контроллер состояний, вы можете думать об этом как о возвращении модели, которая представляет собой массив состояний.
Итак, вы можете попробовать установить свойство прямо на контроллере, но он, вероятно, не будет работать должным образом. Я использую тот факт, что я знаю, что если я дам обещание на модели, он действительно решит это обещание и заменит модель результатом этого обещания. Это немного ближе к ожидаемому поведению ручного создания контроллеров.
ничего себе ... это сбивает с толку. Позвольте мне попытаться перевести то, что, по моему мнению, происходит. В 'ApplicationRoute', указывая модель для' StatesController', вы говорите, что вам нужен 'StatesController' в' ApplicationController'. Свойство 'states' в' ApplicationController' возвращает модель из 'StatesController' из' this.get ('controllers.states') '? Если это правильно, вы могли бы определить модель для 'StatesController' непосредственно в' StatesController', а не в 'ApplicationRoute'? – David
ХА, возможно, это было немного менее запутанно, если я использовал более одного контроллера, позвольте мне посмотреть, могу ли я сломать ваше заявление. – Kingpin2k
ха-ха спасибо!что было бы невероятно полезно – David