我对原型JS编码和回调有一个小问题。它看起来不能正常工作。
这是我的样本:
var hl = new HeaderLogin;
hl.drawPanel();
var HeaderLogin = function(elem) {
this.init = true;
this.jsvh = JSViewHandler.getInstance();
};
HeaderLogin.prototype.drawPanel = function() {
var self = this;
...
this.jsvh.get({
...
'callback': function(rsp, templates) {
...
$('#jsview_user_login_form').ajaxForm({success: asd});
}
});
function asd(rspJSON, statusText, xhr, $form) {
self.showResponse(rspJSON, statusText, xhr, $form);
}
};
HeaderLogin.prototype.showResponse = function(rspJSON, statusText, xhr, $form) {
if (typeof this.init === 'undefined') {
alert('not an object');
}
...
}
我必须在发送表单后调用showResponse
函数,但如果我使用{success: self.showResponse}
,则init
将不存在。它看起来像一个静态调用,我无法从构造函数中访问任何变量。如果我创建一个本地asd
函数并将其用作成功回调,showRespons
将知道构造函数变量。
我不想使用这个额外的功能,如果你有任何关于这个问题的解决方案,请告诉我!
非常感谢! :)
SOLUTION:
成功:self.showResponse.bind(自我)
答案 0 :(得分:0)
我很长时间没有这样做,但你可以试试
'callback': function(rsp, templates) {
...
var s = self;
$('#jsview_user_login_form').ajaxForm({success: s.showResponse});
}