Путь событие кипящий работы в уголек является : не
ChildController -> Controller -> ParentController
а:
View -> Controller -> Route -> ApplicationRoute (optionally)
Поэтому, если событие вызывается из view
он будет пузыриться на controller
и остановитесь там, если controller
возвращает true
из обработчика событий, то он будет продолжать b ubble до route
. События, которые не обрабатываются в controller
или route
, будут пузыряться до ApplicationRoute
.
Чтобы добиться того, что вы хотите сделать, вы должны использовать needs
API для получения доступа к ProjectsController
и отправить события/действия в этой controller
с помощью .send(...)
.
Например:
App.ProjectsController = Ember.ArrayController.extend({
actions:{
newProject: function() {
console.log("ProjectsController:newProject");
}
}
});
App.ProjectsNewController = Ember.ObjectController.extend({
needs: ['projects'],
actions:{
newProject: function() {
console.log("ProjectsNewController:newProject");
// forward action to ProjectsController
this.get('controllers.projects').send('newProject');
}
}
});
App.ProjectsEditController = Ember.ObjectController.extend({
needs: ['projects'],
actions:{
newProject: function() {
console.log("ProjectsEditController:newProject");
// forward action to ProjectsController
this.get('controllers.projects').send('newProject');
}
}
});
Надеется, что это помогает.
Bubbling in router проходит через всю иерархию маршрутов вплоть до маршрута приложения. Таким образом, одно действие может обрабатываться несколькими вложенными маршрутами, если их обработчики bubble (return true). – chrmod