jQuery这样返回

时间:2018-11-11 18:56:06

标签: javascript jquery callback

我在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中获取回调?

2 个答案:

答案 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