错误:error:unpr控制器中未知的提供商注入服务

学徒程序员

我不知道我在做什么错,我所有其他服务都没问题。我正在尝试做的是上传一张照片。最初,代码的服务部分位于控制器内部,我将其重构为服务,因为我不想编写另一整套代码以在编辑照片后再次上传(这是正确的服务吗?)

控制器:

app.controller('UploadCtrl', ['$scope', '$upload','UploadService',
function($scope, $upload,UploadService) {
    $scope.uploads = [];
    var photos = $scope.$parent.photos;
    for (i = 0; i < 3; i++) {
        $scope.uploads[i] = {
            id: i+1,
            showLink: photos[i].showLink,
            showProg: false,
            progress: 0,
            photoUrl: photos[i].dataUrl
        }
    }
}
]);

工厂:

app.factory('UploadService',['$upload', '$scope', function($upload,$scope){

$scope.onFileSelect = function($files, $_upload) {
    for (var i = 0; i < $files.length; i++) {
        var $file = $files[i];

        //set thumbnail
        $scope.dataUrl = null;
        if ($file.type.indexOf('image') > -1) {
            var fileReader = new FileReader();
            fileReader.readAsDataURL($file)

            var loadFile = function(fileReader) {

                fileReader.onload = function(e) {
                    // console.log(e.target.result);
                    $_upload.dataUrl = e.target.result;
                    $_upload.showLink = false;
                    $_upload.showProg = true;
                }
            }(fileReader);
        }

$scope.upload = $upload.upload({
            url: 'upload_picture',
            method: 'POST',
            file: $file,
            fileFormDataName: 'provider[photo_' + $_upload.id + ']'
        }).progress(function(event) {

            $_upload.progress = parseInt(100.0 * event.loaded / event.total);
            // console.log('percent: ' + $_upload.progress);
        }).success(function(data, status, headers, config) {
            // file is uploaded successfully
            // console.log("success")
            // console.log(data);
            $_upload.showProg = false;
        }).error(function(data, status, headers, config) {
            console.log("error");
        });
    }
};

var UploadService = $scope.onFileSelect($files,$upload);
return UploadService;   
}]);

基于此:https : //github.com/danialfarid/angular-file-upload

尚德马尼

首先,服务不能依赖于作用域,因此您不能注入$ scope(可以注入$ rootScope)。您不能从控制器实现中复制和粘贴代码,也不能粘贴到服务中。工厂服务需要创建服务对象,然后附加功能并最后返回

app.factory('UploadService',['$upload', function($upload){
   var service = {};
   service.upload = $upload.upload({
      ...
   });
   return service;
}]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Angular 2.0中注入服务提供商

在工厂错误中注入服务:[$ injector:unpr]未知提供程序:$ scopeProvider <-$ scope <-ProjectService <-Project

角度二:与useFactory提供商不能注入服务

提供商中实际存在的服务提供商

Laravel-在服务提供商中需要php脚本

错误:$ injector:unpr Angularjs 1.5中控制器上的未知提供程序

何时使用延期服务提供商?

身份服务器多个提供商

服务提供商无法在Laravel 5.8中启动

Laravel服务提供商选择要注入的类

与一个服务提供商的FTP连接错误

控制器中未标识注入的服务

WCF中的Oauth 2.0服务提供商

如何从AngularJS中的控制器调用工厂/服务?错误:组件$ injector中的未知提供程序错误

如何测试监视注入服务中的更改的控制器?

AngularJS:解析中的变量未注入控制器(未知提供程序)

错误:在控制器中注入服务时,[$ injector:unpr]

在angularJS中向控制器注入服务失败

将Angular服务注入控制器会导致$ injector:unpr错误(使用AngularBooter)

在Android的LinkedIn集成中,与服务提供商的通信失败

Laravel-从服务提供商存储到会话中?

未知提供程序错误,依赖注入,模态控制器

服务提供商中的多态性laravel 5

将服务注入控制器时,Angular获取未知的提供程序错误

我可以使用托管提供商的SMTP服务器代替域名提供商吗?

如何在Controller中解析服务提供商?

angularjs 和 json 服务器错误:[$injector:unpr] 未知提供者:$resourceProvider <- $resource <- menuFactory

“错误:[$injector:unpr] 未知提供者:”更新控制器依赖项时

是否已经为 WSO2 身份服务器中列出的服务提供商内置了 SSO 功能?