我有一个JS对象,在伪代码中这样做:
function myObj {
// in constructor
... initialise vars
... call $.Ajax to fetch view from server
function AjaxCallBack() {
// load the DOM with the HTML result
$('#dialog').html(ajax.result);
// try to register a change handler
$("#dialog :input").change(this.formChangeEvent);
}
this.formChangeEvent = function(){
... do stuff
}
}
问题是在AjaxCallBack中,'这个'不是myObj对象,而是'窗口'对象,无法解决问题
我能够解决这个问题的唯一方法是让对象的接收者回调到myObj的单独函数并注册事件
objInstance = new myObj();
objInstance.registerEventHandler();
我尝试了其他一些事情,但我显然遗漏了一些基本的东西。
答案 0 :(得分:1)
如果我理解了您的问题,那么您可以将其保存到任何变量,例如var thisObj=$(this)
。现在您可以使用thisObj.formChangeEvent
。希望这会有所帮助。
答案 1 :(得分:0)
试试这个:
function myObj {
// in constructor
... initialise vars
... call $.Ajax to fetch view from server
var oThis = this; // oThis is object this which points to myObj
function AjaxCallBack() {
// load the DOM with the HTML result
$('#dialog').html(ajax.result);
// try to register a change handler
$("#dialog :input").change(oThis.formChangeEvent);
}
this.formChangeEvent = function(){
... do stuff
}
}
它会起作用。