一山析,angularjs $broadcast $emit $on的處理思想
在一個controller里面通過事件觸發(fā)一個方法吊履,在方法里面通過$broadcast或$emit來定義一個變量仔拟,在父,子controller里面通過$on來獲取。
1.phonecatControllers.controller('SelfCtrl', function($scope) {
2. $scope.click = function () {
3. $scope.$broadcast('to-child', 'child');
4. $scope.$emit('to-parent', 'parent');
5. }
6.});
7.
8.phonecatControllers.controller('ParentCtrl', function($scope) {
9. $scope.$on('to-parent', function(d,data) {
10. console.log(data); //父級能得到值
11. });
12. $scope.$on('to-child', function(d,data) {
13. console.log(data); //子級得不到值
14. });
15.});
16.
17.phonecatControllers.controller('ChildCtrl', function($scope){
18. $scope.$on('to-child', function(d,data) {
19. console.log(data); //子級能得到值
20. });
21. $scope.$on('to-parent', function(d,data) {
22. console.log(data); //父級得不到值
23. });
24.});
25.
26.phonecatControllers.controller('BroCtrl', function($scope){
27. $scope.$on('to-parent', function(d,data) {
28. console.log(data); //平級得不到值
29. });
30. $scope.$on('to-child', function(d,data) {
31. console.log(data); //平級得不到值
32. });
33.});
3济丘,點擊Click me的輸出結(jié)果
1.child
2.parent
用$broadcast賦的值晦毙,只能子級得到值生巡;$emit賦的值,只能父級得到见妒;而平級的什么都不能得到孤荣。