我想从服务更新多个控制器中的数据。一种选择是在$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();
});
所以我想我的问题是:
答案 0 :(得分:0)
您重现事件和调度员的概念....使用它!如果未删除var d = ...
(在控制器中)指针的函数范围,则表示内存泄漏。另外在服务中var callbacks
是丑陋的幻灯片效果,因为这个原因更喜欢事件是干净的封装和通用服务!