使用ajax使用带有setter的Class时遇到问题。这是条件。
var MyClass = Class.create();
MyClass.prototype = {
myAttr:0,
setMyAttr: function(){
jQuery.ajax({
url:'data.php',
success:function(data) {
//set myAttr here
}
});
}
}
我想在成功函数中设置myAttr
,怎么做?谢谢。 :d
答案 0 :(得分:2)
你还没有说Class.create
是什么(JavaScript本身没有),但我认为这个问题并不重要。
我假设您要在实例上设置myAttr
,而不是原型(但如果我错了,请参见下文)。最简单的方法是利用success
回调已经是对setMyAttr
调用上下文的闭包这一事实,因此您将变量设置为this
(因为{ {1}} this
回调中的{1}}会有所不同,并使用:
success
有关闭包的更多信息:Closures are not complicated
但如果我错了,你确实想要更新原型:
var MyClass = Class.create();
MyClass.prototype = {
myAttr:0,
setMyAttr: function(){
var self = this; // <== Set the variable
jQuery.ajax({
url:'data.php',
success:function(data) {
self.myAttr = data; // <== Use it
}
});
}
};
(请注意原型分配结束时的var MyClass = Class.create();
MyClass.prototype = {
myAttr:0,
setMyAttr: function(){
jQuery.ajax({
url:'data.php',
success:function(data) {
MyClass.prototype.myAttr = data;
}
});
}
};
。我强烈主张不依赖于自动分号插入的恐怖。)
答案 1 :(得分:0)
您可以执行以下操作:
success:function(data) {
//set myAttr here
MyClass.prototype.myAttr = data;
}