我正在我正在工作的 angularjs 项目中创建一个消息传递服务。
(function (angular) {
'use strict';
angular.module('MyApp').factory('messagebus', messagebus);
messagebus.$inject = ['$rootScope'];
function messagebus($rootScope) {
var factory = {
publish: publish,
subscribe: subscribe,
};
return factory;
function publish(name, params) {
$rootScope.$emit(name, params);
}
function subscribe(name, listener) {
return $rootScope.$on(name, listener);
}
}
}(angular));
当我调用服务时,这就是我正在做的事情
var unregister = messagebus.subscribe('eventname', function (event, message) {
// do something
});
$scope.$on('$destroy', function () {
unregister();
});
我正在处理调用控制器中的注销部分。
我可以在消息总线服务中做些什么作为通用模式并从那里取消注册,而不是在每个控制器上调用取消注册?