角美元http.从承诺中获取价值

Angular $http.post value from promises

本文关键字:获取 承诺 美元 http      更新时间:2023-09-26

我想问你如何通过$http发送数据。post,我使用$q.defer()从函数中获得。

下面是这段代码:

<input type='text' ng-model='name'/>
<input type='file' id='inputFile' />
<button ng-click='save'>Save</button>
JavaScript

file = document.getElementById('inputFile');
function imgToBase64(file_input) {
    var deferred = $q.defer();
    if (file_input.files && file_input.files[0]) {
        var fileReader = new FileReader();
        fileReader.onload = function (event) {
            result = event.target.result;
            deferred.resolve(result);
        };
        fileReader.readAsDataURL(file_input.files[0]);
    }
    return deferred.promise;
};
imgToBase64(file).then(function(result){
   $rootScope.result = result;
});

Post请求

$http.post(apiURL, {
  name: $scope.name,
  image: $rootScope.result
}).success(function(data) {
      console.log(data);
})

问题是,当我点击保存时,'name'的内容被发送,但是$rootScope。结果为空。即使当我把$rootScope。console.log()我可以看到结果,但在帖子中它是空的?我可能做错了什么?由于

我不知道这是不是你想要的:

$scope.save = function () {
    imgToBase64(file).then(function (result) {
        $rootScope.result = result;
        $http.post([...]);
    });
}