在組件中,爲組件提供可選的操作非常簡單。在組件的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