如何让我的.factory返回一个承诺的结果(.then)

时间:2017-10-27 16:48:40

标签: javascript angularjs

我有这个工厂:

我基本上是想把文件送到我的服务器。当我完成上传后,我希望它能够回复。

    .factory('fileUpload', function($http) 
    {

        var ofileUpload = {};

        ofileUpload.uploadFileToUrl = function(file, uploadUrl)
        {
            var fd = new FormData();
            fd.append('file', file);
            return $http.post(uploadUrl, fd, {
                transformRequest: angular.identity,
                headers: {'Content-Type': undefined}
            })
            ,function(){
                ofileUpload.answer="success";
                ofileUpload.respuesta;

            },function(){
               ofileUpload.answer="failure";
               ofileUpload.answer;
            };
        }

        return ofileUpload;
    })

在我的控制器中,我试图这样做:

  //I am executting this:
  fileUpload.uploadFileToUrl(file, uploadUrl).then(function(){
    console.log(fileUpload.answer)
  });

但是我觉得这个错误。

TypeError: fileUpload.uploadFileToUrl(...).then is not a function

如何让我的.factory返回对我的控制器中收到返回值(ofileUpload.answer)的承诺的响应?

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。谢谢!

    .factory('fileUpload', function($http) 
    {

        var ofileUpload = {};

        ofileUpload.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) {
                    ofileUpload.answer="success";
                },function(response) {
                    ofileUpload.answer="failure";
                });
        }

        return ofileUpload;
    })