类内的Javascript回调丢失绑定
我的类有一个问题,我在ajax请求后设置了一个回调函数,这可以正常工作,除了回调使用this=window而不是this=calling类。我试过摆弄装订等,但没有用。谢谢你的帮助类内的Javascript回调丢失绑定,javascript,callback,mootools,Javascript,Callback,Mootools,我的类有一个问题,我在ajax请求后设置了一个回调函数,这可以正常工作,除了回调使用this=window而不是this=calling类。我试过摆弄装订等,但没有用。谢谢你的帮助 <?php if (isset($_POST['id'])){ echo json_encode(array('key' => 'val')); die; } ?> <script type="text/javascript" src="/linkup/js/mootools-
<?php
if (isset($_POST['id'])){
echo json_encode(array('key' => 'val'));
die;
}
?>
<script type="text/javascript" src="/linkup/js/mootools-core-1.4.3-full-compat-yc.js" charset="utf-8"></script>
<script type="text/javascript" src="/linkup/js/mootools-more-1.4.0.1.js" charset="utf-8"></script><script>
var myClass = new Class({
blah: function(){
console.log('this worked ok');
},
foo: function(){
this.blah(); // at this point it is failing with "unknown function"
},
bar: function(){
this.reqJSON({id:1,req:'grabpoints'},this.foo);
},
// data - an aray containing some data to post {id:1,req:'grabpoints'}
// onS - a function to fire on return of data
reqJSON: function(data,onS){
if (this.jsonRequest) this.jsonRequest.cancel();
this.jsonRequest = new Request.JSON({
url: 'test.php',
onRequest: function (object){
console.log('sending json');
},
onSuccess: function (object){
console.log('json success');
onS(object);
}
}
).post(data);
},
});
var o = new myClass();
o.bar();
改变这个
bar: function(){
this.reqJSON({id:1,req:'grabpoints'},this.foo);
}
致:
这绝不是继承范围(即函数的闭包)的一部分,而是在调用函数时确定的,在本例中是由onObject确定的。以这种方式调用,函数就是一个函数。您需要调用this.onSobject,但这在您的情况下不起作用,因为onSuccess函数也不知道这一点
要使用最外层的对象调用foo/onS函数,必须在另一个变量中保存对它的引用,通常称为:
您没有以这种方式进行绑定,这是一个太远的上游引用。如果绑定位于不在myClass实例中的对象/类实例上,该怎么办?你是在两者之间建立一种隐含的联系,而不需要一种联系。他们应该在传递函数之前绑定它。在任何情况下,您都应该执行onS.applythat参数,因为response@DimitarChristoff-非常感谢你这么做,我觉得我太傻了,但我从来没有想过这种方法。它解决了我的问题。
bar: function(){
var self = this;
this.reqJSON({id:1,req:'grabpoints'},self.foo);
}
reqJSON: function(data,onS){
var that = this;
...
onSuccess: function (object){
console.log('json success');
that.onS(object);
}