2016-04-16 22 views
0

私は次のコードを用意しています。レスポンスを隠しフィールドに設定した後にフォームを送信します。問題は、もし私が少し待ってからフォームを提出すれば、それはちょうどそれを保存しない、そしてそれはうまく動作します、私は数ミリ秒または秒を待つことがないです。

私は基本的に値がpaymentToken(隠しフィールド)に設定されるとすぐにフォームを送信したいと考えています。

braintree.setup($scope.serverToken, "dropin", { 
      container: "dropin-container", 
      onPaymentMethodReceived: function (response) 
      { 
       $scope.paymentToken = 'testing'; 

       $scope.$apply(function() { 
        $scope.paymentToken = response.nonce; 
        console.log($scope.paymentToken); 
        document.getElementById("myForm").submit(); // form is submitted, but no paymentToken is not set yet. 
       }); 
      } 
     }); 

答えて

2

スコープ変数(すなわち、$scope.paymentToken = ...)への変更は$スコープ後まで、UI(あなたが提出されている、すなわちフォーム)に適用されません。$完了を適用します。

基本的にはsubmit()を次のサイクルに移動する必要があります。これを行う簡単な方法の1つは、$ timeout ofcourseを注入した後の

console.log($scope.paymentToken); 
    $timeout(function() { 
     document.getElementById("myForm").submit(); 
    }, 0); 
}); 

です。

関連する問題