2013-04-03 3 views
1

У меня есть мобильное приложение, использующее JQM 1.3.0 & Phonegap. Приложение вызывает вызовы веб-сервисов и заполняет содержимое всех страниц AJAX. При разработке в Browswer и называя мои сценарии непосредственно, все работает отлично:jQuery Мобильный не строит первую динамическую страницу, когда внутри Phonegap deviceready

applicationScripts() 

function applicationScripts(){ 

    $(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() { 

     $.ajax({ 
      //make call and populate content. 
     }) 
    }); 
} 

Однако, когда я вызываю функцию внутри deviceready слушателя, # стр.1 не получает данные. Страницы 2-5 работают нормально. (Я также попытался вложенности слушателя событий внутри <body onload="onLoad()"> функции, но имели схожие результаты.)

document.addEventListener('deviceready', applicationScripts, false); 

function applicationScripts(){ 

    $(document).on("pageinit", "#page1, #page2, #page3, #page4, #page5", function() { 

     $.ajax({ 
      //#page1 not getting content. 
     }) 
    }); 
} 

Вот глава моего документа. Все мои скрипты находятся в файле 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». Любая помощь приветствуется!

ответ

0

Я сделал пару проектов PhoneGap, и я никогда не связывал события страницы внутри функции deviceready.

Просто свяжите события страницы в файле js. Он работает отлично. В конце концов, у меня есть 3 проекта PhoneGap, работающих на производстве, и ни один из проектов не получил проблем по этой причине.

Я использовал deviceready функции в моем проекте, чтобы отключить кнопку назад, чтобы не initalise любых страниц и т.д. и т.п.

Надежды, которые помогут вам.

+0

Я использую Geolocation API, а также. Должен ли я оставлять эти скрипты внутри 'deviceready'? –

0

Вы можете попробовать код ниже:

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 
    }) 
}); 
}