使用 Angular 事件系统
$范围。$放出
使用 $scope.$emit
将通过范围层次结构向上触发事件名称并通知 $scope
。事件生命周期从调用 $emit
的范围开始。
工作线框:
$范围。$广播
使用 $scope.$broadcast
将在 $scope
上发射一个事件。我们可以使用 $scope.$on
听这些事件
工作线框:
句法 :
// firing an event upwards
$scope.$emit('myCustomEvent', 'Data to send');
// firing an event downwards
$scope.$broadcast('myCustomEvent', {
someProp: 'some value'
});
// listen for the event in the relevant $scope
$scope.$on('myCustomEvent', function (event, data) {
console.log(data); // 'Data from the event'
});
而不是 $scope
你可以使用 $rootScope
,在这种情况下你的事件将在所有控制器中可用,无论控制器范围如何
清理 AngularJS 中注册的活动
清理已注册事件的原因是因为即使控制器已经被破坏,注册事件的处理仍然存在。所以代码肯定会出乎意料。
// firing an event upwards
$rootScope.$emit('myEvent', 'Data to send');
// listening an event
var listenerEventHandler = $rootScope.$on('myEvent', function(){
//handle code
});
$scope.$on('$destroy', function() {
listenerEventHandler();
});