使用 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();
});