服务$如何看待其他服务的数据?

时间:2014-05-14 08:22:17

标签: angularjs

[更新]我想我可以更好地表达这一点,并问“两个服务之间如何沟通?”


我有两个服务从服务器获取两种不同的数据。每个控制器都有两个控制器,$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代替吗?

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:2)

编辑:

您似乎想要在服务之间进行通信。您确实可以使用$ rootScope广播,这将触发所有控制器和手表的广播风暴。更面向对象的方法是创建一个PubSub服务,您的服务可以注入和使用该服务。另见这个问题:

What's the correct way to communicate between controllers in AngularJS?