gpt4 book ai didi

javascript - Backbone.js 中的变量范围

转载 作者:行者123 更新时间:2023-12-02 18:39:22 26 4
gpt4 key购买 nike

我在 Backbone.js 中有一个使用 Stripe 支付系统的 Web 应用程序。

这是模型代码的一部分:

App.Models.Payment = Backbone.Model.extend({

defaults: {
id:null
},

url: function() {
// code
},

initialize:function(){
this.id='';
this.saveClicked= false;
this.saveDetailsChecked= true;
}

此模型用于此 View :

App.Views.BillingView = Backbone.View.extend({

el: '#billing-fields',

events: {
'click #billing-footer-buttons .navigation .confirm-btn': 'saveCardClicked'
},

initialize:function(models, options) {
Stripe.setPublishableKey('**********************');
var self = this;
},

saveCardClicked:function(e) {
e.preventDefault();
if (this.model.saveClicked) return false;
this.model.saveClicked = true;
var $form = $('#payment-form');
Stripe.createToken($form, this.stripeResponseHandler);
},

cancelClicked:function() {
vent.trigger('showScreen', 'subscribe-container');
},

stripeResponseHandler:function(status, response) {
var $form = $('#payment-form');
self.saveDetailsChecked = document.getElementById("billing-checkbox").checked;
var atr1 = document.getElementById("billing-card-number").value;
var atr2 = self.model.savedCard;
if(document.getElementById("billing-card-number").value == self.model.savedCard){
self.model.set('use_saved_card','1');
vent.trigger('doPayment');
}else{
if (response.error) {
// code
} else {
// code
}
}
self.saveClicked = false;
}
});

在 saveCardClicked 函数中,我可以访问模型中的变量,例如 saveClicked 变量。

但是在 stripeResponseHandler 中,我无法从模型访问“saveClicked”变量,在此函数中,它指的是窗口,并且也无法访问在初始化函数中定义的 self 变量。

stripeResponseHandler 是从 Stripe API 调用的。

有什么方法可以访问stripeResponseHandler函数中的savedCard变量或者我应该使用全局变量吗?

最佳答案

尝试使用这个:-

Stripe.createToken($form, this.stripeResponseHandler.bind(this));

关于javascript - Backbone.js 中的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com