Ajax jQuery Mobile在Phonegap deviceready中未构建第一个动态页面
我有一个使用jqm1.3.0和Phonegap的移动应用程序。该应用程序进行web服务调用,并使用AJAX填充所有页面的内容。在浏览器中开发并直接调用脚本时,一切正常:Ajax jQuery Mobile在Phonegap deviceready中未构建第一个动态页面,ajax,cordova,jquery-mobile,hybrid-mobile-app,Ajax,Cordova,Jquery Mobile,Hybrid Mobile App,我有一个使用jqm1.3.0和Phonegap的移动应用程序。该应用程序进行web服务调用,并使用AJAX填充所有页面的内容。在浏览器中开发并直接调用脚本时,一切正常: applicationScripts() function applicationScripts(){ $(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() { $.ajax({
applicationScripts()
function applicationScripts(){
$(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() {
$.ajax({
//make call and populate content.
})
});
}
但是,一旦我从deviceready侦听器内部调用该函数,#page1就不会获取数据。第2-5页很好用。(我还尝试将事件侦听器嵌套在
函数中,但结果类似。)
这是我文件的标题。我所有的脚本都在application.js文件中
<script type="text/javascript" src="js/cordova.ios.js"></script>
<script src="js/jquery-1.9.1.min.js"></script>
<script src="js/jquery.mobile-1.3.0.min.js"></script>
<script src="js/application.js" ></script>
我不知道这是否是一些文件/事件在其他文件/事件之前加载的时间问题,但似乎我已经尝试了脚本顺序和调用“deviceready”的各种方式的所有可能组合。感谢您的帮助 我已经完成了两个PhoneGap项目,并且从未绑定
deviceready
函数中的页面事件
只需在js文件中绑定页面事件。它很好用。毕竟,我有3个PhoneGap项目在生产中运行,没有一个项目因为这个原因报告了问题
我在我的项目中使用了devicerady
功能来禁用后退按钮,而不是初始化任何页面等
希望这对您有所帮助。您可以尝试以下代码:
var deviceReadyDeferred = $.Deferred();
var jqmReadyDeferred = $.Deferred();
document.addEventListener("deviceReady", deviceReady, false);
function deviceReady() {
deviceReadyDeferred.resolve();
}
$(document).one("mobileinit", function () {
jqmReadyDeferred.resolve();
});
$.when(deviceReadyDeferred, jqmReadyDeferred).then(doWhenBothFrameworksLoaded);
function doWhenBothFrameworksLoaded() {
$(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() {
$.ajax({
//Do something here
})
});
}
我也在使用地理定位API。我应该将这些脚本留在
设备中吗?
var deviceReadyDeferred = $.Deferred();
var jqmReadyDeferred = $.Deferred();
document.addEventListener("deviceReady", deviceReady, false);
function deviceReady() {
deviceReadyDeferred.resolve();
}
$(document).one("mobileinit", function () {
jqmReadyDeferred.resolve();
});
$.when(deviceReadyDeferred, jqmReadyDeferred).then(doWhenBothFrameworksLoaded);
function doWhenBothFrameworksLoaded() {
$(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() {
$.ajax({
//Do something here
})
});
}