这不起作用,但给出了一个想法:小部件需要使用自己的方法作为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
这样做的规范方法是什么?
答案 0 :(得分:0)
$ .post回调需要使用callback
或.apply
来调用您自己的.call
,这两个回调都允许您设置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);
});
},