Javascript jQuery返回如下

Javascript jQuery返回如下,javascript,jquery,callback,Javascript,Jquery,Callback,我对jQuery回调有问题 我试着这样做 MainController.js mapController = $.fn.mapController(); getMapController = function() { return mapController; }; (function ( $ ) { $.fn.mapController = function(options) { let mapController = {}; let sett

我对jQuery回调有问题

我试着这样做

MainController.js

mapController = $.fn.mapController();

getMapController = function() {
   return mapController;
};
(function ( $ ) {
    $.fn.mapController = function(options) {
        let mapController = {};
        let settings = $.extend({
            save: function(data) {}
        }, options);

        mapController.openModal = function () {
             //OPEN MODAL
        }

        return: mapController
    }
}(jQuery));
function setPlace() {
    getMapController({
      save: function(data) {
         console.log("TEST") 
      }
    }).openMapModal();
}
mapController.js

mapController = $.fn.mapController();

getMapController = function() {
   return mapController;
};
(function ( $ ) {
    $.fn.mapController = function(options) {
        let mapController = {};
        let settings = $.extend({
            save: function(data) {}
        }, options);

        mapController.openModal = function () {
             //OPEN MODAL
        }

        return: mapController
    }
}(jQuery));
function setPlace() {
    getMapController({
      save: function(data) {
         console.log("TEST") 
      }
    }).openMapModal();
}
nextController.js

mapController = $.fn.mapController();

getMapController = function() {
   return mapController;
};
(function ( $ ) {
    $.fn.mapController = function(options) {
        let mapController = {};
        let settings = $.extend({
            save: function(data) {}
        }, options);

        mapController.openModal = function () {
             //OPEN MODAL
        }

        return: mapController
    }
}(jQuery));
function setPlace() {
    getMapController({
      save: function(data) {
         console.log("TEST") 
      }
    }).openMapModal();
}
所以。。。我尝试从getMapController方法获取nextController中的mapController,但没有工作链接回调

如何在nextController.js中获取回调?

getMapController返回一个函数,您必须使用以下方法调用它:

此外,您还有一个错误:在这一行:

return: mapController
应该是:

return mapController

通过使用与插件返回的对象相同的名称命名jQuery插件,似乎引入了一些混淆。两者都称为映射控制器。这本身不是问题,但在setPlace中调用mapController就好像它是传递选项的jQuery插件一样,但实际上它是它返回的对象,请参见MainController.js,它不是一个函数

因此,我认为您需要更改MainController代码,并使全局mapController变量等于jQuery插件:

mapController = $.fn.mapController;
              //               ^^^^^ remove parentheses.

如前所述,确保删除MapController中return语句中的语法错误;它后面不应该有冒号。

但是$.fn.plugin中的这个不是$。它是$selectorAh返回的jQuery对象,是的,但是显然,OP没有像那样使用它。