。然后在通话服务功能后不工作

时间:2016-12-03 21:26:45

标签: javascript angularjs

我有这个简单的服务

<uses-permission android:name="android.permission.CAMERA" />
            <uses-feature android:name="android.hardware.camera2" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

只是将图像上传到服务器,现在在控制器中我调用服务和功能&#39; uploadFileToUrl&#39;。

angular.module('tadeluApp')
  .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(data){

          return data.url;

       })

       .error(function(){
       });
    }
 }]);

---> server response <---

问题是,我需要在我的控制器中收到这篇文章的回复,我在我的控制器中调用服务函数后尝试使用.then函数,但它没有用。一些帮助?谢谢!

1 个答案:

答案 0 :(得分:0)

您需要返回正在生成的Promise并返回$http,以便继续Promise链。调用uploadFileToUrl()时,提供的代码实际上不会返回Promise。

this.uploadFileToUrl = function(file, uploadUrl){  
   var fd = new FormData();
   fd.append('file', file);

   return $http.post(uploadUrl, fd, {
      transformRequest: angular.identity,
      headers: {'Content-Type': undefined}
   })
    .then(function(data) {
      return data.url;
    })
    .catch(function(err) {
      // Handle error
    });
}