#ember.js
#ember.js
Вопрос:
В Ember у меня есть приложение, в котором у меня есть внешний контроллер, шаблон которого отображается в стандартном {{outlet}} .
Однако шаблон содержит именованную розетку {{сведения о розетке}}, и одно из действий этого контроллера выполняет transitionToRoute(), который отображает внутри этой розетки «details», и есть внутренний контроллер, который обрабатывает этот вложенный шаблон.
Что мне нужно сделать, так это выполнить действие над внутренним шаблоном / контроллером, вызывающее действие на внешнем контроллере. Кажется, что Ember не может преодолеть барьер «выхода». События всплывают только внутри розетки, а не в родительские розетки.
Вещи, которые я пробовал:
- Пробовал this.send() и this.sendAction() .
- Попытался внедрить внешний контроллер во внутренний контроллер (требуется: «main», main: Ember.вычисляется.псевдоним («controllers.main»)) — приводит к ошибке «undefined не является функцией».
- Использование тега {{action}} во вложенном шаблоне и отправка действия, существующего на родительском контроллере, приводит к тому, что «Ничто не обработало действие ‘selectTab’. Если вы действительно обработали действие, эта ошибка может быть вызвана возвратом true из обработчика действия в контроллере, что приводит к ошибке «всплывающее действие».
Возможно ли то, что я пытаюсь сделать? Я знаю, что мог бы имитировать это с помощью jQuery, но я бы предпочел не делать этого, я предпочитаю делать это «ember way» (если он есть).
Ответ №1:
Номер 2 работает
App.IndexRoute = Ember.Route.extend({
model: function() {
return ['red', 'yellow', 'blue'];
},
renderTemplate: function(){
this.render();
var fooCont = this.controllerFor('foo');
this.render('foo',{
into:'application',
outlet:'foo',
controller:fooCont
});
}
});
App.ApplicationController = Em.Controller.extend({
actions:{
hello: function(val){
alert(val);
}
}
});
App.FooController = Em.Controller.extend({
needs:'application',
application: Em.computed.alias('controllers.application'),
actions:{
sendToApp: function(){
this.get('application').send('hello', 'world');
}
}
});
Комментарии:
1. Kingpin2k… Вы невероятно эпичны! 🙂 <3