我在jQuery回调中遇到问题
我尝试这样做。
MainController.js
mapController = $.fn.mapController();
getMapController = function() {
return mapController;
};
mapController.js
(function ( $ ) {
$.fn.mapController = function(options) {
let mapController = {};
let settings = $.extend({
save: function(data) {}
}, options);
mapController.openModal = function () {
//OPEN MODAL
}
return: mapController
}
}(jQuery));
nextController.js
function setPlace() {
getMapController({
save: function(data) {
console.log("TEST")
}
}).openMapModal();
}
所以...我尝试通过mapController
方法在nextController
中获得getMapController
,但不能从workink回调中获取...
如何在nextController.js
中获取回调?
答案 0 :(得分:1)
您似乎通过命名与插件返回的对象名称相同的jQuery插件引入了一些困惑。两者都称为mapController
。这本身不是问题,但是在setPlace
中您可以像调用jQuery插件一样调用mapController
(传递选项),但实际上是返回的对象通过它(请参阅MainController.js),这不是一个函数。
所以我想您将要更改MainController代码,并使全局mapController
变量等于jQuery插件:
mapController = $.fn.mapController;
// ^^^^^ remove parentheses.
就像已经提到的那样,请确保消除MapController中return
语句中的语法错误;它后面应该没有冒号。
答案 1 :(得分:0)
getMapController()
返回一个函数,您必须使用()
来调用它:
function setPlace() {
getMapController({
save: function(data) {
console.log("TEST")
}
})().openMapModal();
}
此外,您在此行上有一个错误的:
:
return: mapController
应该是:
return mapController