Tôi đang sử dụng góc cạnh và trong cửa sổ phương thức angularUI Tôi muốn hiển thị biểu mẫu thả xuống từ Braintree để nhận phương thức thanh toán. Vì vậy, tôi tạo ra các hình thức thông thường (partial.html
):Thiết lập nhiều cuộc gọi thiết lập Braintree cho nhiều sự kiện trênPaymentMethodReceived
<form id="creditCard" >
<div id="dropin"></div>
<button type="submit" id="btnPay" >Pay</button>
</form>
và sau đó tôi hiển thị các phương thức với điều này:
var modalInstance = $modal.open({
templateUrl: 'partial.html',
controller: 'ModalController'
});
đâu ModalController chứa các cuộc gọi đến thiết lập Braintree:
braintree.setup($scope.clientToken, 'dropin', {
container: 'dropin',
onPaymentMethodReceived: function (result) {
$scope.$apply(function() {
$scope.success = true;
// Do something else with result
});
}
});
Điều này sẽ hiển thị biểu mẫu thả xuống từ braintree độc đáo (thiết lập tạo biểu mẫu) và chấp nhận thẻ tín dụng và ngày hết hạn, tất cả đều hoạt động tốt cho đến thời điểm này.
Vấn đề là, mỗi lần tôi gọi phương thức, ModalController được thực hiện, và do đó braintree.setup()
cũng được thực thi. Sau đó, khi tôi nhập số thẻ tín dụng và ngày hết hạn và lần trả tiền, sự kiện onPaymentMethodReceived()
được kích hoạt một lần cho mỗi lần thực hiện thiết lập! Đó là, nếu lần đầu tiên tôi gọi phương thức, nó sẽ kích hoạt sự kiện một lần, lần thứ hai nó sẽ kích hoạt nó hai lần, v.v. Giống như mỗi khi tôi gọi thiết lập, một móc mới cho sự kiện được tạo.
Bất kỳ ý tưởng nào về cách tránh điều này? Có cách nào để "unbind" xử lý sự kiện onPaymentMethodReceived()
? Tôi cần phải gọi thiết lập nhiều lần vì mỗi lần tôi gọi phương thức, clientToken có thể đã thay đổi.
Cảm ơn mọi trợ giúp hoặc con trỏ để trợ giúp.
Tôi làm việc tại Braintree. Chúng tôi đang làm việc để cải thiện điều này; không có một giải pháp đơn giản, tuyệt vời cho việc này vào lúc này. Nếu bạn [liên lạc với nhóm hỗ trợ của chúng tôi] (https://support.braintreepayments.com/) họ sẽ có thể giúp bạn. – agf
Mọi cập nhật về điều này, @agf? –