angularjs $broadcast 및 $on 사용 및 주의사항

4919 단어 angularJs
같은 페이지에서 일반적으로 서로 다른ctr제어 모듈이 있습니다. 그러면 서로 다른ctr간에 이벤트를 전달하려면broadcast와on으로 이벤트를 전파하고 수신해야 합니다. 다음은 데모입니다.
"ParentCtrl"> www.111cn.net //
"SelfCtrl"> // "click()">click me
"ChildCtrl">
//
"BroCtrl">
//
phonecatControllers.controller('SelfCtrl', function($scope) { $scope.click = function () { $scope.$broadcast('to-child', 'child'); $scope.$emit('to-parent', 'parent'); } }); phonecatControllers.controller('ParentCtrl', function($scope) { $scope.$on('to-parent', function(event,data) { console.log(data); // }); $scope.$on('to-child', function(event,data) { console.log(data); // }); }); phonecatControllers.controller('ChildCtrl', function($scope){ $scope.$on('to-child', function(event,data) { console.log(data); // }); $scope.$on('to-parent', function(event,data) { console.log(data); // }); }); phonecatControllers.controller('BroCtrl', function($scope){ $scope.$on('to-parent', function(event,data) { console.log(data); // }); $scope.$on('to-child', function(event,data) { console.log(data); // }); });

이상은 예이다. 주의해야 할 몇 가지 것은, 또한 내가 만난 것이다. 만약ctr1의 형제ctr2를 사용하려면 먼저ctr1을 통해 이벤트를 아버지ctr로 전달한 다음에 아버지ctr에서 다른 제어ctr2로 방송하고 여기ctr1에서ctr로emit(′ctr1event′,′ctr1′);그리고ctr에서ctr2로의broadcast('ctrevent','ctr');두 개의ctr1event와ctrevent는 같을 수 없습니다. 똑같으면 이벤트 방송의 무선 순환을 초래할 수 있습니다. 또한 $on('dddd','function(event, 데이터) {});function의 매개 변수인 이벤트나 데이터를 적게 쓰지 마세요. 사실 적게 쓰면 실행할 수 있지만 문제가 생길 수 있습니다. 구체적으로 시도하지 않았고 자신이 겪은 문제이기도 합니다. 바로 위와 같습니다. 도움이 되었으면 좋겠습니다.

좋은 웹페이지 즐겨찾기