1

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

我正在手动加载我的脚本文件(jquery、jqm、knout 等)并将这些库定义为我的 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 事件?

提前致谢。

4

1 回答 1

2

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

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;
        };
    });
});
于 2013-02-28T07:50:32.077 回答