javascript - 如何处理 Controller 内部 Angular 服务的错误?

标签 javascript angularjs file-upload

我是 Angular 新手,我正在尝试从 Controller 内的服务访问错误消息

这是我的服务

 admin.service('fileUpload', ['$http', function ($http) {
        this.uploadFileToUrl = function(file, uploadUrl){
           var fd = new FormData();
           fd.append('file', file);

           $http.post(uploadUrl, fd, {
              transformRequest: angular.identity,
              headers: {'Content-Type': undefined}
           })

           .success(function(response){
              console.log(response)
           })

           .error(function(response){
              console.log(response)
           });
        }
     }]);```

我的 Controller 内的上传功能如下所示

admin.controller('uploadCtrl', function($scope, fileUpload){


 $scope.uploadFile = function(){
           var file = $scope.myFile;
           var uploadUrl = "/upload-url/";
           fileUpload.uploadFileToUrl(file, uploadUrl)
        };

});

最佳答案

$http.post 返回一个 promise ,您可以从 uploadFileToUrl 函数返回该 promise 。然后,如果有人需要与结果交互,他们可以使用 Promise 对象。

服务:

admin.service('fileUpload', ['$http', function ($http) {
    this.uploadFileToUrl = function(file, uploadUrl){
       var fd = new FormData();
       fd.append('file', file);

     //VVVVVV----------  added return statement
       return $http.post(uploadUrl, fd, {
          transformRequest: angular.identity,
          headers: {'Content-Type': undefined}
       })
    }])

Controller

admin.controller('uploadCtrl', function($scope, fileUpload){
    $scope.uploadFile = function(){
       var file = $scope.myFile;
       var uploadUrl = "/upload-url/";
       fileUpload.uploadFileToUrl(file, uploadUrl)
         //VVVVVV------------ added .then and callbacks
           .then(
              function (result) {
                 console.log('success!');
              },
              function (error) {
                 console.log('error :(');
              }
           )
    };
});

关于javascript - 如何处理 Controller 内部 Angular 服务的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972083/

相关文章:

javascript - 如何在第二次点击时隐藏类(class)

javascript - Django/AngularJS : How do I access my Python Context Items from my AngularJS Script

javascript - 指令 templateUrl 重定向到/

c# - 是否可以在带有上传文件的 asp.net web api 中进行模型绑定(bind)?

file-upload - 如何在 sails 中指定 Express 的文件上传目录?

javascript - 无法对通过 Angular REST 调用接收到的 Javascript 对象数组进行排序

javascript - 当我在数字类型文本框中输入 float 时,Firefox 显示错误

javascript - 为什么在 Cordova 中以 Windows 8 为目标时会自动包含 WInJS?

c# - HttpPostedFile SaveAs(LocationOnServer) 后文件被锁定

php - php 文件的 OOP Diamond 问题 - 我应该如何处理?