【问题标题】:Update data in multiple controllers from service从服务更新多个控制器中的数据
【发布时间】:2016-10-17 05:44:58
【问题描述】:

我想从一个服务更新多个控制器中的数据。一种选择是在$rootScope 上广播/发送数据。

我必须有数百个听众,有些人在听同一个事件,有些人在听其他人。并且每隔几秒就会分派一个事件。

我创建了一个有效的解决方案,它使用回调和取消注册它们的可能性。奇怪的是,我没有看到其他人使用类似的解决方案,这让我想知道是否有理由不这样做。

服务

var callbacks = {};
var idCounter = 0;
function register(cb) {
  var id = idCounter++;
  callbacks[id] = cb;

  return function() {
    delete callbacks[id];
  };
}

function send(data) {
  for (var i in callbacks) {
    callbacks[i](data);
  }
}

控制器

var d = service.register(function(data) {
  console.log(data);
});

$scope.$destroy(function() {
  d();
});

所以我想我的问题是:

  • 我有什么理由不应该使用这种回调机制。 (内存泄漏?)
  • 我应该只参加活动吗?在这种规模下性能无关紧要?
  • 改进?

【问题讨论】:

    标签: javascript angularjs events callback


    【解决方案1】:

    您重现事件和调度程序的概念......使用它!如果var d = ...(在控制器中)指针的函数范围没有被删除,是内存泄漏。同样在服务var callbacks 是丑陋的幻灯片效果,因此更喜欢事件是干净封装和通用服务!

    【讨论】:

      猜你喜欢
      • 2014-09-14
      • 2015-11-19
      • 2014-11-27
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多