【问题标题】:AngularJS watching service variablesAngularJS 监视服务变量
【发布时间】:2013-04-06 07:59:40
【问题描述】:

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

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

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

【问题讨论】:

标签: javascript angularjs angularjs-service


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-01-04
    • 1970-01-01
    • 2014-09-28
    • 2012-09-16
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    相关资源
    最近更新 更多