2016-06-30 3 views
0

$ q.defer()を使って関数から得た$ http.postを通してデータを送信する方法をお聞きしたいと思います。ここで

は、コードのビットは次のとおりです。

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

POSTリクエスト

問題は、私がsaveを押すと、 'name'の内容が送信されますが、$ rootScope.resultは空です。 $ rootScope.resultをconsole.log()に置いても結果は見えますが、ポストでは空ですか? 何が間違っている可能性がありますか? おかげ

答えて

1

これはあなたが望むものであるならば、私は知らない。

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

イェーイを!うまく働いた:) – marek