未捕获的TypeError:myModule.function不是函数

时间:2017-05-17 19:09:20

标签: javascript dojo

如果我通过define加载模块,我无法调用模块中定义的函数,但是当我需要模块时函数存在并且可以被调用。像这样的东西

致电模块

define([
    "dojo/_base/declare",
    ... ,
    "app/myModule"

], function (declare, ... , myModule) {

        var thisModule = declare(null, {

            constructor: function () {

            }
        });

        /**
         * Go to next page
         */
        thisModule.nextPage = function () {

            myModule.goToPage(nextPage).then(function(){

            });
        };

        return thisModule;
});

被叫模块

define([
    "dojo/_base/declare"
],

function (declare) {

    var myModule = declare(null, {

        constructor: function () {

        }
    });

    myModule.goToPage = function(page){

        var deferred = new Deferred();

        //some code

        deferred.resolve(1);

        return deferred.promise;
    };

    return  myModule;

});

我收到此错误

  

未捕获的TypeError:myModule.goToPage不是函数

但是,如果我在代码周围放置一个require并且需要myModule它就可以工作并且myModule对象上存在该函数

喜欢这个

thisModule.nextPage = function () {

     require("app/myModule", function(myModule){

        myModule.goToPage(nextPage).then(function(){                
        });

    });         
};

1 个答案:

答案 0 :(得分:0)

问题是定义导入的顺序,public static void msgDialog(String message){ JOptionPane.showMessageDialog(null, message); } 是指定义中的其他加载模块,所以在这种情况下,将模块放在声明之后,在{ {1}}和myModule功能如下:

define