因为考虑到各个层之间的职责关系,我认为:事件发布应该方法控制器中,而不应该放在Service中,Service就等着被别人调用,不应该与其他文件有耦合关系,否则改起来很难改。
$on
重构指令,使用$on监听事件发布,执行相应的逻辑重新显示右上角的未读消息数。
angular.module('webappApp') .directive('yunzhiUnReadMessageCount', function(ToMessageService, superCache) { return { template: '<b ng-if="count">{{ count }}</b>', restrict: 'E', // 元素 link: function postLink(scope) { var self = this; self.init = function() { self.computeMessageCount(); }; // 计算未读消息数量 self.computeMessageCount = function() { // 判断缓存中是否存在未读消息数量 if (angular.isUndefined(superCache.get('unReadMessageCount'))) { // 获取当前用户的所有未读收件消息 ToMessageService.pageReceiveUnReadMessageOfCurrentUser(undefined, function(data) { // 存入缓存 superCache.put('unReadMessageCount', data.totalElements); // 显示 scope.count = superCache.get('unReadMessageCount'); }); } else { scope.count = superCache.get('unReadMessageCount'); } }; // 处理reloadMessageCount事件的处理逻辑 scope.$on('reloadMessageCount', function() { // 清除缓存 superCache.remove('unReadMessageCount'); // 计算未读消息数量 self.computeMessageCount(); }); // 初始化 self.init(); } }; });