Jquery mobile requirejs模块未捕获pageinit事件

Jquery mobile requirejs模块未捕获pageinit事件,jquery-mobile,requirejs,require,Jquery Mobile,Requirejs,Require,我正在使用jquery mobile开发一个应用程序,并正在使用RequireJS将应用程序重新分解为模块。我几乎完成了任务,但遇到了一个问题,我需要一些帮助 我正在手动加载脚本文件(jquery、jqm、knockout等),并将这些库定义为main.js文件中的第一个精简 (function(){ var root = this define('jquery', [], function () { return root.jQuery; }); define('ko'

我正在使用jquery mobile开发一个应用程序,并正在使用RequireJS将应用程序重新分解为模块。我几乎完成了任务,但遇到了一个问题,我需要一些帮助

我正在手动加载脚本文件(jquery、jqm、knockout等),并将这些库定义为main.js文件中的第一个精简

(function(){
    var root = this
    define('jquery', [], function () { return root.jQuery; });
    define('ko', [], function () { return root.ko; });
    ....
})();
接下来,我加载jquery移动插件并启动应用程序

    ....
    require([
        'Scripts/lib/mobile/jquery.mobile-1.2.0'
    ], function () {
        $(document).on('pageinit' function(){ alert('page init event triggere'); });
        boot();
    });
我的问题是'pageinit'事件已经由requirejs执行工厂函数的时间触发,该函数附加到事件。后续的pageinit事件按预期捕获,但我在应用程序首次加载时丢失了初始事件。如果我将事件绑定移出require模块,它就可以正常工作。知道我如何注册和处理这些jqm事件吗


提前感谢。

我也遇到了同样的问题,我发现您不应该将jquery mobile模块作为全局依赖项加载,而是直接加载到函数的核心:

require(["jquery"], function($) { 
    console.log("requireJS loaded");

    require(["jquery.mobile"]);

    $( document ).on( 'pagecreate pageinit pageshow', '#mappage', function( event ) {
        var eventType = event.type;
        switch(eventType) {
            case 'pagecreate':
                console.log("mappage : pagecreate");
                break;
            case 'pageinit':
                console.log("mappage : pageinit");
                break;
            case 'pageshow':
                console.log("mappage : pageshow");
                break;
        };
    });
});

谢谢,这真是太棒了。唯一不同的是,我在调用require之前先绑定了事件。我不确定这是否重要,但我只是觉得最好是有点防御性。