【发布时间】:2017-01-16 14:58:22
【问题描述】:
我有一个控制器A,它使用this.send('makeItHappen') 发送了一个动作,我想在控制器B 中处理它。我该怎么做?
JS:
// controllers/documents/datasets/controller-A
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
sendToDataCenter() {
this.send('makeItHappen'); // this throws an error
}
}
});
// controllers/controller-B
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
makeItHappen() {
console.log('It works!!');
}
}
});
在控制器 B 中,它会抛出一个错误:
Uncaught Error: Nothing handled the action 'makeItHappen'. If you did handle the action, this error can be caused by returning true from an action handler in a controller, causing the action to bubble.
请问,有人可以帮忙吗?谢谢。
【问题讨论】:
-
控制器 A 和控制器 B 之间的连接是什么?我的意思是它分别是父子路由吗?如果没有连接,则可以注入控制器并直接调用函数
-
谢谢@kumkanillam,路径是:
controllers/documents/datasets/controller-A和controllers/controller-B -
我没有找到 A 和 B 控制器之间的任何关系,我的意思是当存在父子关系时,
send将冒泡到父控制器,直到父应用程序路由在层次结构中......所以你可以注入并直接调用控制器-B 的makeItHappen函数。这是可能的
标签: javascript ember.js web-applications ember-controllers