2016-06-30 11 views
0

Ich möchte Sie fragen, wie Sie Daten über $ http.post, die ich von der Funktion mit $ q.defer() erhalten senden. Hier

ist das Stück Code:

HTML

<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; 
}); 

Gesuch

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

Das Problem ist, dass, wenn ich save, dann Inhalt von "Name" gesendet wird, aber das $ rootScope.result ist leer. Auch wenn ich $ rootScope.result auf console.log() setze, kann ich das Ergebnis sehen, aber im Post ist es leer? Was kann möglicherweise schief gehen? Dank

Antwort

1

Ich weiß nicht, ob dies ist, was Sie wollen:

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

Yay! Arbeitete genau richtig :) – marek

Verwandte Themen