我正在我正在工作的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();
});
我正在处理呼叫控制器中未注册的部分。
我可以在messagebus服务中做一些通用模式并从那里注册而不是在每个控制器上调用unregister吗?