AngularJS:监视服务属性更改

时间:2017-10-29 17:57:28

标签: angularjs angularjs-scope angularjs-service angularjs-watch

我正在尝试为我的应用显示简单的下载进度。每次下载文件时,os下载的总数将呈现给用户。例如,文件1 / 5,2 / 5,5 / 5。 下载是使用promises的downloadService完成的,每次成功下载变量都会增加。我试图在控制器中显示该数字,但直到现在我都没有成功。我只能显示文件总数(另一个downloadService变量)。 我试图直接访问变量,尝试了$ watch()而没有。我能够访问变量的唯一方法是使用$ interval来检查更改,但这似乎是我需要的开销。

这就是我的......

下载服务:

myApp.controller('preloader', ['$scope', 'downloadService', '$interval', function($scope, downloadService, $interval)
{
    $scope.downloadService = downloadService;

    //doesn't work...
    $scope.$watch(function()
    {
        return downloadService.getDownloadStatus();
    },
    function(value)
    {
        console.log(value);
    }, true);

    //works....
    $interval(function()
    {
        console.log($scope.downloadService.getDownloadStatus());
    }, 1000);

}]);

Preloader Controller

recyclerview

我在这里做错了什么?我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

你试过这个:

 $scope.$watch(function()
 {
    return $scope.downloadService.getDownloadStatus();
 }