2014-07-12 47 views
0

我有一项服务取决于另一项服务。当其他服务上的方法给出不同的结果时(比以前),我希望自动更改主服务上的属性(然后通过控制器视图绑定自动更改该视图,以进入视图)。Angular:服务中:观察其他服务中的更改

这个问题可以理解吗?这怎么能实现?我可以让控制器进行观察,但也许可以让我的主要服务自己监视取决于服务的更改(不需要在每个控制器中都有手表)?

回答

0

添加其他服务作为依赖,你的主要服务,并添加下面的函数有太多:

$scope.watch($otherService.getValue, function (newValue, oldValue) { 

    alert("value changed from " + oldValue + " to " + newValue); 
    $scope.propertyToChange = .... 

}); 

的GetValue是一个返回观看价值的其他服务功能。如果此功能的结果改变,则观察者将被触发。

我现在无法测试该片段,对不起。但我希望它能帮助你。

+0

但在我的主要服务中,是否存在$ scope这样的事情?服务具有属性和方法,但$ scope? – EricC

+0

哦,是的......没错。然后把'$ scope.watch'放到你的控制器中,并在该函数中调用你的主要服务。因此工作流程将是:第二次服务更改 - >控制器检测到 - >控制器通知主服务。 – Tom

+0

但是之后我必须在所有控制器(使用此服务)中重复此$ scope.watch ...但是,如果没有办法避免这种情况... – EricC