2016-03-20 19 views
0

私はangularJSに慣れておらず、http.get()を使用しようとしています。私はQRスキャンを完了しており、QRコードから受け取ったテキストは私のURLに配置されます。私が受け取っている問題は、スキャンが完了する前にhttp.get()が実行されていることです。したがって、 "エラー"を返します。どうすれば$ scope.QRScan()関数が完了した後でhttp.get(url)が実行されるようにすることができますか?angs js http get

$scope.QRscan(); /// Want to finish first 

    var params = "?number=" + $scope.QRText; 
    params += "&action=ci"; 

    var url = "http://test/test.php" + params; 

    var promise = $http.get(url); 

    promise.then(
    function(payload) { 
     var r = payload.data; 

     if (r.status.toString() == '1') { 
     var alertPopup = $ionicPopup.alert({ 
      title: ' successful ', 
     }); 
     } else { 
     var alertPopup = $ionicPopup.alert({ 
      title: 'Error', 
     }); 

     }; 
    }); 

QRScan()

$scope.QRscan = function() { 
    $cordovaBarcodeScanner.scan().then(function (qrData) { 
    }, function (error) { 
    var alertPopup = $ionicPopup.alert({ 
     title: 'There was an error scanning the QR code.', 
    }); 
    }); 
    $scope.QRText = qrData.text; 
}; 
+0

この$ scope.QRscan()は約束を返しますか、またはコールバック関数を受け入れますか? node.jsはノンブロッキングですので、$ scope.QRscan()はvar params = "?number =" + $ scope.QRTextの前に終了します。コールバックを使用するか、または約束の解決を待たなければなりません –

答えて

0

$ http.get()あなたはこのようにそれを書くことができ、非同期

です:

function getData() { 
    return $http.get(url) 
    .then(function(data) { 
    // this is where we can manipulate your data 
    // set to $scope object/whatever 
    // because its async, we need to use a promise (or callback) to wait for 
    // the response from your get request 
    }) 
    .catch(function(err) { 
    // if err, console.log(err) 
    }) 
} 

行うにはカップルの方法がありますこれは、上記の「ショートカットメソッド」の下にあります。https://docs.angularjs.org/api/ng/service/ $ http

+0

ありがとう!それとドキュメンテーションは私の問題を助けました。 – Anthony

+0

nice!お力になれて、嬉しいです – JordanHendrix