$emit , $broadcast and $on的用途 -- AngularJS
References : http://docs.angularjs.org/api/ng.$rootScope.Scope
1. $on:用來接收Events
2. $emit:發送Event, 發送的方向是從目前的scope往上發送到parent $scope.$on
(目前的scope的$on也會有動作)
3. $broadcast:發送Event, 發送的方向是從目前的scope往下發送到child $scope.$on
(目前的scope的$on也會有動作)
1. $on:用來接收Events
2. $emit:發送Event, 發送的方向是從目前的scope往上發送到parent $scope.$on
(目前的scope的$on也會有動作)
3. $broadcast:發送Event, 發送的方向是從目前的scope往下發送到child $scope.$on
(目前的scope的$on也會有動作)
但是光看官方的文件真的很難讓人理解,所以我做了一點小實驗來讓自己容易理解。
我大概做了以下的實驗:
1. 兩個同Level的Controller, 同樣的Event Listener會因為某一個Controller內的emit or broadcast發送Event時,會兩個都會影響嗎?
(試試 Call Reset with Emit on Child1 or Call Reset with Broadcast on Child1)
2. 最小的child的Controller的$emit會ㄧ直往上傳Event給所有的parent的$on嗎?
(試試Call Reset with Emit on inside)
3. 最上層的broadcast發送Event真的會往下傳給Child的$on嗎?
(試試範例的Reset Broadcast就知道)
Check out this Pen!
留言