Ember Checkbox - Доступ к свойству модели с другого контроллера
У меня есть флажок на модальном всплывающем окне, и мне нужно проверить его на основе значения в несвязанной модели. Модель Team, а свойство, к которому мне нужно получить доступ, называется syncAccount (boolean), поэтому помощник по вводу будет выглядеть примерно так:
{{input type="checkbox" name="syncAccount" checked=team.syncAccount }}
Как я могу получить доступ или привязать к team.syncAccount из модального? У меня есть ModalImportController, но нет связанного маршрута. Есть ли какой-то способ в этом контроллере, чтобы я мог назначить свойство, которое ищет или связывает со значением syncAccount для текущей команды (и обновляется по мере их переключения)?
Точно так же мне нужно установить флажок, чтобы отправить запрос на обновление для этого поля. Должен ли это быть запрос ajax, или есть какой-то способ установить модель, используемую флажком, для указания на команду, чтобы я мог вызвать @model.save()?
1 ответ
Чтобы получить доступ к свойству от другого контроллера, сначала нужно включить его через needs
вот так:
App.ModalImportController = Ember.ArrayController.extend({
needs: "team",
teamController: Ember.computed.alias("controllers.team"),
});
тогда у вас будет доступ к его свойствам так:
// still in ModalImportController
syncAccount: function() {
return this.get('teamController.syncAccount');
}.property('teamController.syncAccount')
Я не проверял это сейчас, но я сделал это немного иначе.
источник: [ http://guides.emberjs.com/v1.13.0/controllers/dependencies-between-controllers/][1]
Для переключения запроса на обновление я использую:
syncAccount: Ember.computed('model.syncAccount', {
get: function() {
return this.get('model.syncAccount');
},
set: function(key, value) {
this.set('model.syncAccount', value);
// do all you need to do via AJAX here
return value;
}
})
обратите внимание, что вы также получаете значение отсюда, поэтому измените ваш input-helper на:
{{input type="checkbox" name="syncAccount" value=syncAccount }}