AngularJS作用域作为工厂侦听器

AngularJS作用域作为工厂侦听器,angularjs,Angularjs,我有一个工厂,它只返回一个upload helper对象。此帮助程序将文件上载到服务器,并将上载进度返回给其侦听器。 通过将回调方法设置为upload helper,工厂中注入的控制器就是侦听器。 控制器获取值,但不使用新值更新其作用域 这是工厂: app.factory("upHelper", function(){ var uploadHelper = function(){ } uploadHelper.prototype.addFileToUpload = fu

我有一个工厂,它只返回一个upload helper对象。此帮助程序将文件上载到服务器,并将上载进度返回给其侦听器。 通过将回调方法设置为upload helper,工厂中注入的控制器就是侦听器。 控制器获取值,但不使用新值更新其作用域

这是工厂:

app.factory("upHelper", function(){

    var uploadHelper = function(){
    }
    uploadHelper.prototype.addFileToUpload = function(file){
           this.file = file;
    }
    uploadHelper.prototype.stopUpload = function(){....}
    uploadHelper.prototype.setListener = function(cb){
        var self = this;  
        cb(self.getStatus());
    } 
    var upHelper= new uploadHelper();

    return self.uploadHelper;
}
带工厂注入的控制器:

app.controller("upload", function("upHelper"){
    $scope.file = file;

    $scope.uploadFile = function(file){
        uploadHelper.addFileToUpload($scope.files);
        if(!uploadHelper.running)
              uploadHelper.start():
        uploadHelper.setListener(function(uploadStatus){
               $scope.file.uploadStatus = uploadStatus;    // this doesn't update the scope
               $scope.apply(function(){
                    $scope.file.uploadStatus = uploadStatus;   //causes error and doesn't update anything.
               });


        }
    }
}

几个控制器使用uploadHelper。。是否有更好的方法来实现此功能或使其发挥作用?

错误是什么?它应该是
$scope.$apply
,我不明白为什么它不能解决这个问题,就是这样。很多坦克