0

私が取り組んでいる 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();
});

呼び出し元のコントローラーで登録解除の部分を処理しています。

各コントローラーで登録解除を呼び出すのではなく、一般的なパターンとしてメッセージバスサービスで実行できることはありますか?

4

0 に答える 0