2017-01-16 29 views
0

我有一個控制器A發送動作this.send('makeItHappen'),我想在控制器B中處理它。我該怎麼做?在Ember中,我如何處理從另一個控制器中的控制器發送的動作

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.

請,誰能幫助?謝謝。

+0

控制器A和控制器B之間的連接是什麼?我的意思是分別是父母的孩子路線嗎?如果沒有連接,那麼你可以注入控制器和調用函數direclty – kumkanillam

+0

謝謝@kumkanillam,路徑是: 'controllers/documents/datasets/controller-A'和 'controllers/controller-B' – Shaoz

+0

我沒有找到任何關係在A和B控制器之間,我的意思是當有父子關係時,'send'會冒泡到父控制器,直到父應用程序在層次結構中路由。所以你可以注入並直接調用控制器B的'makeItHappen'功能。這可能是 – kumkanillam

回答

2

一般而言,如果未定義每條路線,則每條路線將具有一個默認控制器。 在控制器-A,這行代碼this.send('makeItHappen');將尋找在行動哈希數據表,文檔,應用控制器的makeItHappen方法及其相應的途徑,如果makeItHappen定義的任何地方,然後就不會出現此錯誤。

爲了實現你所需要的, 當前,在你的路由/控制器層次結構中,控制器A和控制器B之間沒有父子關係。所以你可以直接在控制器-A內部插入控制器-B並直接撥打makeItHappen

// controllers/documents/datasets/controller-A 
import Ember from 'ember'; 

export default Ember.Controller.extend({ 
controllerB:Ember.inject.controller('controller-B');//this should be already instantiated ie,this corresponding route should be visited earlier otherwise you will get `unknown injection: controller:users' Error 
    actions: { 
    sendToDataCenter() { 
     this.get('controllerB').send('makeItHappen'); 
    } 
    } 
}); 
+0

謝謝你的回答。但我想使用Controller-A在Controller-B中發送的內容。是否我必須使用相同的技術,例如將控制器-A注入到控制器-B中? – Shaoz

+0

這種要求是奇數,如果要單獨使用只是函數,那麼你可以把它寫爲UTIL文件和出口,包括它在哪裏,無論你需要的。 – kumkanillam

+0

基本上我想要的就是從一個選擇下拉列表的onchange事件中發送一個動作(在Controller-A中)。然後在另一個控制器(Controller-B)中捕捉到,就是這樣。但我不知道我該怎麼做。在控制器/路由層次,即 – Shaoz

相關問題