2016-10-31 13 views
0

私は成功したサーバーからの応答を持っています、どうすればそれをコントローラに送信できますか?そのメソッドを試しましたが、その投げエラーが次に定義されています、どうすればこのタスクを達成できますか?角度サービスからコントローラにデータを取得する方法は?

service.jsあなたが約束を返す必要が

angular.module('App').service('fileUpload', ['$http', function ($http) { 
    this.uploadFileToUrl = function(file, uploadUrl){ 
     var fd = new FormData(); 
     fd.append('file', file); 
     console.log('service called', fd); 
     $http.post(uploadUrl, fd, { 
      transformRequest: angular.identity, 
      headers: {'Content-Type': undefined} 
     }) 
     .success(function(resp){ 
     console.log('success',resp); 
     return resp; 
     }) 
     .error(function(){ 
     }); 
    } 
}]); 

controller.js

$scope.uploadFile = function(){ 
       var file = $scope.myFile; 
       // console.log('file is '); 
       // console.dir(file); 
       // console.log(file); 
       var uploadUrl = "/fileUpload"; 
       fileUpload.uploadFileToUrl(file, uploadUrl).then(function(resp){console.log(resp); 
}; 
      }; 

答えて

1

サービスに(とにかく廃止予定されている).successを使用しないでください、とだけ約束自体を返します。

angular.module('App') 

.service('fileUpload', ['$http', function ($http) { 
    this.uploadFileToUrl = function(file, uploadUrl){ 
     // ... other code ... 
     // return the $http promise itself here 
     return $http.post(uploadUrl, fd, { 
      transformRequest: angular.identity, 
      headers: {'Content-Type': undefined} 
     }) 
    } 
}]) 

コントローラでは(.catchはオプションですが、$ promiseのエラーが発生した場合は使いやすいです)。

$scope.uploadFile = function(){ 
    // ... other code ... 
    var uploadUrl = "/fileUpload"; 

    fileUpload.uploadFileToUrl(file, uploadUrl) 
     .then(function(response) { console.log(response) }) 
     .catch(function(error) { console.log(error) }); 
}; 
+0

問題を解決しました。 – hussain

0

、唯一のあなたは、コントローラでthenを使用することができます。

0

このようにコードを変更します。

angular.module('App').service('fileUpload', ['$http', function ($http) { 
    this.uploadFileToUrl = function(file, uploadUrl) { 
    var fd = new FormData(); 
    fd.append('file', file); 
    console.log('service called', fd); 
    return $http.post(uploadUrl, fd, { 
     transformRequest: angular.identity, 
     headers: {'Content-Type': undefined} 
    }); 
    } 
} 

$scope.uploadFile = function() { 
    var file = $scope.myFile; 
    // console.log('file is '); 
    // console.dir(file); 
    // console.log(file); 
    var uploadUrl = "/fileUpload"; 
    fileUpload.uploadFileToUrl(file, uploadUrl) 
    .then(function(resp) { 
    console.log('Your response here', resp); 
    }); 
}; 
関連する問題