[更新]我想我可以更好地表达这一点,并问“两个服务之间如何沟通?”
我有两个服务从服务器获取两种不同的数据。每个控制器都有两个控制器,$scope.$watch
表示要更改的数据。
我想变聪明检测互联网连接的丢失/重新获得,所以我添加了app.service('internetConnectionAvailableService'
。当我的一个数据获取服务检测到HTTP结果时,它会通知“internetConnectionAvailableService”成功或失败。
我希望其他数据获取服务能够意识到这一点。
我想我可以将两个数据获取服务整合到一个&删除internetConnectionAvailableService,但我不愿意(如果我最终得到更多的数据获取服务怎么办?)。
所以,我认为它是broadcast
/ $on
或使用$watch
。谷歌似乎建议使用$watch
,但我似乎无法在我的数据提取服务中使用它....
app.service('GetServerDataService',function(){
var serverData;
return {
getServerData: function()
{
return serverData;
},
$scope.$watch(internetConnectionAvailableService.isInternetConnectionAvailable,
function(){
}
}
}
给出“Uncaught SyntaxError:Unexpected token。”
我是Angular的新手,所以对使用$rootscope.$watch
进行了疯狂猜测,但这给了我同样的信息。
我做错了什么?如何观看其他服务的数据?或者我应该使用broadcast
代替吗?
提前感谢您提供任何帮助
答案 0 :(得分:2)
编辑:
您似乎想要在服务之间进行通信。您确实可以使用$ rootScope广播,这将触发所有控制器和手表的广播风暴。更面向对象的方法是创建一个PubSub服务,您的服务可以注入和使用该服务。另见这个问题:
What's the correct way to communicate between controllers in AngularJS?