2012-03-30 2 views
4

Я использую jQuery mobile с PhoneGap и хочу показать страницу входа при первом использовании приложения и показать индексную страницу при последующих загрузках.Условная начальная страница в jQuery mobile

Мое текущее решение заключается в использовании следующих по deviceready

if(!localStorage.registered){ 
    $.mobile.changePage("#login", { transition: "none"}); 
} 

Однако моя проблема с этим состоит в том, что вы до сих пор см страница перехода. Я бы хотел, чтобы страница входа была первой видимой.

Любые советы? Благодаря!

+0

Я не знаю телефонную связь, но делает эту работу? 'webView.loadUrl (« yourpage # login »);' вместо строки у вас внутри 'if' stmt – uday

ответ

3

Это Q составляет несколько месяцев, он остается без ответа, у меня нет никакого опыта работы с телефонной щелью, но я jQM, так Я подумал, что это может помочь.

В настоящее время я использую это решение для своего приложения, задерживая автоматическую инициализацию jQM. Это пример того, как вы могли бы свободно основываться на том, как это делает мое приложение.

(function() { 

    #stop jQM from auto initialising 
    $(document).on("mobileinit",function() { 
    $.mobile.autoInitializePage = false; 
    }); 

    var my_app = new MyApp(); 

    # custom afterinit event is triggered on the app instance 
    $(my_app).on('afterinit',function() { 
    var initial = 'login'; 
    if(localStorage.registered) { 
     initial = 'home'; 
    } 
    # set the page hash to our start page 
    window.location.hash = initial; 

    #initialise jQM 
    $.mobile.initializePage(); 
    }); 

})(); 

Убедитесь, что вы обеспечить вещь, которая решает, если Логин разрешено, в моем приложении у меня есть структура данных, которая требуется от приложения AJAX, чтобы MyApp.appdata это будет только там, если Войти был действительно успешным.

+0

Это похоже на то, что я закончил делать, но я дам вам принятый ответ, так как вы его задокументировали :) спасибо ! – CambridgeMike

+0

Рад, что вам это удалось в конце концов, я полагал, что вы, вероятно, будете иметь, но только для других, как ссылку в качестве возможного решения. хорошего дня. – Rob

+0

Я пытаюсь сделать то же самое с jqm, и я не понимаю строку 'var my_app = new MyApp() ... Также не пользовательское событие ... – Matthieu

0

Что прятать #registration и #login затем сделать:

if(localStorage.registered){ 
    $('#login').show(); 
} else { 
    $('#registration').show(); 
} 
1

Другим решением может быть страница прокси. Другой подход, который я использовал в другом приложении.

Начальный шаг загрузки, который является только фиктивной страницей. Сделайте страницу в своем документе как первую страницу, например.

<div id="loading" data-role="page">Loading</div> 

на этапе mobileinit привязывается к событию pageshow.

$(document).on("mobileinit",function() { 
    $('#loading').on('pageshow',function() { 

    # ... 
    # do login check here 
    # ... 

    var initial = 'login'; 
    if(localStorage.registered) { 
     initial = 'home'; 
    } 
    # change to our initial page 
    $.mobile.changePage(initial); 
    }); 

}); 
+0

changePage не работает, когда '$ .mobile.autoInitializePage = false' –