Угасает реализация
Как бы вы реализовали проблемы в Ember. Например, отправить функцию приглашения:
- У пользователя есть 5 приглашений (хранилище участвует в извлечении данных)
- приглашение доступно из любого состояния приложения
- это появляется в модальном
- это может быть больше чем один - таким образом {{outlet modal}} также не работает
- пользователь может ввести адрес электронной почты и отправить приглашение (количество доступных приглашений уменьшилось)
текущая модальная реализация - таким образом не может назначить контроллер представлению...
openModal: function(modal) {
var modalView = this.container.lookup(modal);
modalView.appendTo(MS.rootElement);
}
Компонентный подход не работает как для меня: контент (модель) должен быть настроен с помощью перенаправления, я не знаю событие в компоненте, которое может быть полезно для извлечения данных.
Вложенные маршруты также не работают - многое изменить.
Я не могу найти какой-либо рабочий подход для этого, пожалуйста, помогите.
Заранее спасибо.
1 ответ
Вы можете назначить контроллер для представления. Вот простой пример, где я могу внедрить представление из любой точки на странице, назначить ему контроллер, и когда я снова открываю представление, у него будет тот же контроллер (если это был ожидаемый результат). Если это не поможет вам двигаться в правильном направлении, дайте мне знать.
Вы можете использовать всплывающее окно, чтобы позволить его вызывать из любой точки приложения.
http://emberjs.jsbin.com/uhoFiQO/4/edit
App.InviteView = Ember.View.extend({
templateName: 'invite'
});
App.InviteController = Ember.Controller.extend({
actions: {
pretendToSend: function(){
var invites = this.get('invites');
this.set('invites', invites-1);
}
}
});
App.ApplicationRoute = Ember.Route.extend({
setupController: function(controller, model){
var inviteController = this.controllerFor('invite');
inviteController.set('invites', 5);
},
actions:{
popInvite: function(){
var inviteController = this.controllerFor('invite');
// create/insert my view
var iv = App.InviteView.create({controller: inviteController});
iv.appendTo('body');
}
}
});