我有以下类似的javascript类:
class ModalFormButton {
constructor() {
this.contactForm = new ContactForm();
let utils = new Utils();
this.$signupModal = $(utils.getModalTmpl());
}
loadContactForm() {
this.$signupModal.modal();
this.contactForm.load();
}
contactBtnHandler(e) {
e.preventDefault();
let utils = new Utils();
var $t = $(this),
$modalTitle = $t.data('modal-title'),
$modalFormId = $t.data('modal-form-id');
$('body').append(this.$signupModal);
this.$signupModal.find('.modal-title').html($modalTitle);
this.$signupModal.find('.modal-body').load($t.attr('href') + ' #' + $modalFormId,this.loadContactForm);
};
registerHandlers() {
$('.modal-form-btn').click(this.contactBtnHandler);
};
load() {
this.registerHandlers();
};
}
我的问题是,当调用contactBtnHandler
时,我无法访问类属性,因为上下文属于modal-form-btn
。
我知道我可以使用箭头函数来解决这个问题,但是我想知道是否可以在函数中分离回调中的逻辑(这里是一个简短的例子,但我有更长的函数),其方式与我的类似使用。
由于
答案 0 :(得分:2)
您可以尝试在回调处理程序
中将“this”绑定到您的班级registerHandlers() {
$('.modal-form-btn').click(this.contactBtnHandler.bind(this) );
};
答案 1 :(得分:1)
可以这样做:
getHandler (){
return e => {
//this is ModalFormButton
};
}
然后:
$('.modal-form-btn').click(this.getHandler());