AngularJS正在观看服务变量

时间:2013-04-14 00:04:20

标签: javascript angularjs angularjs-service

好的,我真的很挣这个。我尽可能地寻找解决方案,但即使有很多类似的问题也找不到它。

我上课了。我只需要一个实例,所以我为它做了服务:

services.factory('PlayerService', ->
     new Player()
)

你可以看到它是某种玩家。 我需要我的观点在歌曲改变时更新

这是一个非常简化的演示plnk,可以解决问题:http://plnkr.co/edit/L3WndT

以下是基于this question的尝试。没有一种解决方案能够发挥作用。

视图

<div ng-controller="PlayerController">
    {{ player.currentSong }}
</div>

第一个

PlayerController = ($scope, PlayerService) ->
    $scope.player = PlayerService
    return

第二个

PlayerController = ($scope, PlayerService) ->
    $scope.$watch(
        'myApp.services.PlayerService'
        (newval, oldval) ->
            $scope.currentSong = newval
        true
    )
    return

1 个答案:

答案 0 :(得分:0)

如果您真的在处理一些定期更新的外部服务,并且没有提供任何方式来监听更新事件(如您的Plunker中所示),您可以轮询更新并保持范围同步如下: / p>

http://plnkr.co/edit/PJpQ2a?p=preview

请注意,poll方法不需要显式更新范围。 Angular在您嵌入视图中的表达式“serviceClass.prop”上创建了一个监视。 $ timeout服务触发一个摘要周期,当表达式发生变化并更新视图时,它会触发监视器监听器。