javascript - 动态更改已在 JavaScript 中创建的实例的值
问题描述
我在这里使用“Braintree - Dropin”。页面加载时创建实例,之后我有一个下拉菜单可以选择“支付金额”。我想在下拉列表更改时更新实例的值(已创建)。
var form = document.querySelector('#payment-form');
var client_token = "{{ Braintree\ClientToken::generate()}}";
var amount = document.getElementById("amount");
var amount_val = amount.options[amount.selectedIndex].value;
braintree.dropin.create({
authorization: client_token,
selector: '#bt-dropin',
applePay: {
displayName: 'My Store',
paymentRequest: {
total: {
label: 'My Store',
amount: amount_val
}
}
}
}, function (createErr, instance) {
if (createErr) {
console.log('Create Error', createErr);
return;
}
amount.addEventListener("change", function() {
console.log(amount.value);
// Where i'm trying to change amount
instance.updateConfiguration('applePay', 'paymentRequest', {
total: {
label: 'My Store',
amount: amount.value
}
});
});
form.addEventListener('submit', function (event) {
event.preventDefault();
instance.requestPaymentMethod(function (err, payload) {
if (err) {
console.log('Request Payment Method Error', err);
return;
}
// Add the nonce to the form and submit
document.querySelector('#nonce').value = payload.nonce;
form.submit();
});
});
});
根据“Dropin”文档,这应该可以工作。但事实并非如此。 https://braintree.github.io/braintree-web-drop-in/docs/current/Dropin.html#updateConfiguration
解决方案
创建实例后,我找不到更改实例的可能方法。但我通过将过程分成两部分来解决问题。我做了两个步骤来完成付款。在第一页,用户将从下拉列表中选择金额,然后单击下一步按钮,将所选金额提交到付款页面。然后在付款页面上,这个实例是用上一页已经过帐的金额创建的。希望这会帮助有类似问题的人。
推荐阅读
- sabre - 异常:“服务提供者调用失败”是什么意思?什么是众所周知的解决方法?
- reactjs - 如何更改/格式化从 react-final-form 输入的道具中的值
- matlab - 输入参数不足,正在访问表数据
- stream - obspy 读取 wav 文件未知格式
- mysql - Docker MySQL:通信链路故障
- garbage-collection - 在启用 DisableExplicitGC 的情况下安排 FullGC
- javascript - 在移动设备上调整大小时的多步骤表单
- python - Azure函数python - 如何防止SNAT端口耗尽?
- database - Firebase 的限制
- java - 某些扩展的 Java 路径过滤