我想问你如何通过$ http.post发送数据,我使用$ q.defer()从函数中获取数据。
以下是代码:
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;
});
发布请求
$http.post(apiURL, {
name: $scope.name,
image: $rootScope.result
}).success(function(data) {
console.log(data);
})
问题是,当我点击保存时,那就是&#39; name&#39;发送,但$ rootScope.result是空的。即使当我将$ rootScope.result放到console.log()时,我可以看到结果,但在帖子中它是空的? 什么可能做错了? 感谢
答案 0 :(得分:1)
我不知道这是不是你想要的:
$scope.save = function () {
imgToBase64(file).then(function (result) {
$rootScope.result = result;
$http.post([...]);
});
}