我正在使用Angular Websockets来定义一个旨在全局活动的工厂。当前工厂定义为:
ngApp.factory('FixtureFeed', [
'$websocket', '$rootScope', function($websocket, $rootScope) {
var dataStream;
dataStream = $websocket("ws://" + window.location.hostname + "/");
dataStream.onMessage(function(message) {
return $rootScope.$broadcast('message', message.data);
});
return dataStream;
}
]);
然后我只是将其作为依赖于我的一个控制器,例如:
ngApp.controller('FixtureCustomCtrl',函数($ scope,$ http,$ rootScope,FixtureFeed){ #其他代码...... });
只是将它放在那里并且不再触摸它似乎允许它在控制器的生命周期之外活动,如果我切换到调用不同控制器的不同角度路径,FixtureFeed
继续处理消息和广播。
我可以将工厂包含在我所有控制器的依赖项中,这看起来工作正常,只需要一次实例化工厂并处理每条消息一次,但当然感觉就像一个肮脏的黑客。我也不能保证任何给定的控制器将立即变为活动状态,因为我有各种可能是使用该应用程序的入口点的路由。请问这个问题的正确方法是什么?