2016-04-16 36 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()移動到下一個週期。一個簡單的方法可以這樣做:

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

注入$ timeout of course後。