Javascript jQuery小部件和内部回调
这不起作用,但给了您一个想法:小部件需要使用自己的方法作为回调:Javascript jQuery小部件和内部回调,javascript,jquery,Javascript,Jquery,这不起作用,但给了您一个想法:小部件需要使用自己的方法作为回调: $.widget("me.mywidget", { _create: function() { this.call("mymodule", "myaction", {arg: this.options.value}, _parseData); }, _parseData: function(data) { console.log(data); }, ca
$.widget("me.mywidget", {
_create: function() {
this.call("mymodule", "myaction", {arg: this.options.value}, _parseData);
},
_parseData: function(data) {
console.log(data);
},
call: function(module, action, params, callback) {
var params = params || {};
var url = "/" + module + "/" + action;
$.post(url, params, function(data) {
if (data.payload) callback(data.payload);
});
},
});
它当前引发异常:uncaughtreferenceerror:\u未定义parseData
执行此操作的标准方法是什么?美元后回调需要使用
.apply
或.call
调用您自己的回调
,这两种方法都允许您在调用的函数中设置此
的范围
call: function(module, action, params, callback) {
var params = params || {};
var url = "/" + module + "/" + action;
var self = this;
$.post(url, params, function(data) {
if (data.payload) callback.apply(self, [ data.payload ]);
});
},
或:
你可以。天哪,那太容易了。我甚至没有想过,在回调中使用这个和“this”是窗口,而不是widget对象,这是不可取的
call: function(module, action, params, callback) {
var params = params || {};
var url = "/" + module + "/" + action;
$.post(url, params, function(data) {
if (data.payload) callbac.call(self, data.payload);
});
},