使用事件扩展Angular服务

时间:2014-02-11 21:43:37

标签: angularjs events mediator

有没有办法使用事件pub / sub扩展Angular Service,Factory或Provider返回的对象?

我想做点什么:

angular.module('app').factory('user', function(Event){
  var user = {
    // User methods...
  };
  return angular.extend(user, Event);
})

// In a distant time and place...
angular.module('app').directive('nav', function(user){
  scope: true,
  templateUrl: 'something',
  link: function(scope){
    user.on('logIn', function(user){
      scope.user = user
    })
  }
})

我完成了与承诺相似的事情。这通常是从服务异步通信的好方法,但是用户可以注销并进入,并且承诺仅解析一次。事件更适合这里。

我也理解我可以通过$rootScope上的广播/发射和scope的聆听来解决这个问题,但我觉得这很臭。 :)

你们想出什么样的模式在服务之间进行调解?

2 个答案:

答案 0 :(得分:0)

我正在使用(修改后的版本)pubsub服务,您可以查看here

您可以通过此question

了解$ rootScope事件和pubsub的权衡

希望这有帮助

答案 1 :(得分:0)

我在看同样的问题。特别是如何允许服务在不访问$ rootScope的情况下广播和订阅事件(由于某些原因而不好)。 我从这里使用了非常优秀的js-signals实现: http://millermedeiros.github.io/js-signals/ 并把它包裹成一个有角度的服务。

github要点:https://gist.github.com/anonymous/b552c7fafa77427e6d06