$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. 兩個同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!

留言

熱門文章