这不起作用,但给你一个想法:一个小部件需要使用自己的方法作为callbacK:
$.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);
});
},
});
它当前引发异常:Uncaught ReferenceError: _parseData is not defined
这样做的规范方法是什么?
$.post 回调需要使用 .apply
或 .call
调用您自己的callback
,这两者都允许您在调用的函数中设置this
的范围。
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 ]);
});
},
或:
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);
});
},
您可以阅读此内容以获取有关申请/调用的更多信息。