在组件中,为组件提供可选的操作非常简单。在组件的JS我可以这样写:在Ember路线中,我该如何检查行动是否存在?
if (this.get('someAction')) {
this.sendAction('someAction');
}
在我的应用程序路径我有一个“通用的行动”,节省了我提供与动作长列表窗口组件,它看起来像这样:
genericAction: function(customActionName, customActionParams) {
this.send(customActionName, customActionParams);
}
由于各种原因(包括在某些组件中使用genericAction来启动测试可以订阅的动作,但应用程序不一定用于某些难以测试的异步/伪装者工作流程),我宁愿检查动作是否存在,即:
genericAction: function(customActionName, customActionParams) {
if (this.get(customActionName)) {
this.send(customActionName, customActionParams);
}
}
与组件中的相似,但这不起作用,this.controller.get(customActionName)
也不起作用。
除了保留一个硬编码的动作列表,我该如何做到这一点?
存在丢失的封闭托架我想: '如果(Em.get(this.controller.actions,actionName)){ 这一点。获得( '控制器')发送(actionName)。 }' – Pavol