我正在使用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事件的?
提前致谢。
答案 0 :(得分: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;
};
});
});