2016-04-26 5 views
1

У меня есть пара вложенных маршрутов. В одном из них можно открыть модальный (который прикреплен к другому выводу, называемому модальным).EmberJs - Bubble up от модального

Когда пользователь вводит текст и нажимает «ОК», он отправляет действие («valueUpdated») в MyrouteChildController. Тем не менее, я также должен пузырить это событие до MyrouteController, но он не работает. Я попытался вернуть true в обработчике действий, а также вручную вызвать @send.

Если я вызываю действие MyrouteChildController из своего собственного шаблона, он работает.

http://emberjs.jsbin.com/lotinaw/edit?html,js,output

Любая помощь будет оценена.

ответ

0

Не только вы можете inject услуги в components и controllers в Ember с помощью Ember.inject.service() но вы можете также вводить контроллеры и отправить действия с ними с помощью Ember.inject.controller(), а затем продолжить

export default Ember.Component.extend({ 
    mycontroller: Ember.inject.controller('mycontroller'), 
    funcUsingControllerToSendAction(args){ 
     let mycontroller = this.get('mycontroller'); 
     mycontroller.send('myaction',args); 
    } 
}); 

Это позволит вам отправлять действия с аргументами для другого контекста контроллера.

+0

Будьте осторожны при вводе контроллеров, если они не являются контроллером для родительского маршрута и вы не посетили этот конкретный маршрут, он будет неинициализирован. – locks

+0

@locks - есть ли способ проверить, инициализирован ли контроллер? Будет ли проверка 'mycontroller instanceof Ember.Controller' действительной для проверки инициализации контроллера? – canufeel

+0

Нет. Это будет экземпляр Controller, потому что вы его ввели. – locks

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