3

好吧,我真的在努力解决这个问题。我到处寻找解决方案,但即使有很多类似的问题也没有找到。

我有一堂课。我只需要一个实例,所以我为它提供了服务:

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

如您所见,它是某种播放器。当歌曲更改时,我需要更新我的视图

这是一个暴露问题的极其简化的演示 plnk:http: //plnkr.co/edit/L3WndT

这是我根据这个问题尝试过的。任何解决方案都不起作用。

看法

<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
4

1 回答 1

0

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

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

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

于 2013-04-14T01:34:32.130 回答