我在ember中有一个组件,它需要向应用程序控制器发送一个动作(带有一个参数)。无论在何处呈现此组件,它都需要在应用程序控制器上调用完全相同的操作。
应用控制器
export default Ember.Controller.extend({
actions: {
addAlert: function(message) {
this.set('message', message);
},
removeAlert: function(message) {
this.set('message', message);
}
}
});
我该如何处理?从开始到结束。
答案 0 :(得分:6)
动作不会通过控制器冒泡,当一个动作被触发时,它将通过当前路径的控制器,如果没有任何处理,它会一直冒泡到当前路径一直到顶层路径(应用程序)
如果该操作必须在控制器上设置属性,则可以直接从应用程序路径设置它(尽管不建议这样做)。
// routes/application.js
actions {
addAlert(message) {
this.controller.set('message', message);
},
removeAlert(message) {
this.controller.set('message', message);
}
}
有关更多信息,请阅读action bubbling。