Jquery mobile requirejs模块未捕获pageinit事件
我正在使用jquery mobile开发一个应用程序,并正在使用RequireJS将应用程序重新分解为模块。我几乎完成了任务,但遇到了一个问题,我需要一些帮助 我正在手动加载脚本文件(jquery、jqm、knockout等),并将这些库定义为main.js文件中的第一个精简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'
(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之前先绑定了事件。我不确定这是否重要,但我只是觉得最好是有点防御性。