Jquery mobile, не может заставить его изменить страницу, используя $ .mobile.changePage - PullRequest
2 голосов
/ 23 августа 2011

Я использую следующий код, чтобы программно изменить страницу в моем приложении с помощью phonegap:

$('#selection').change(function() {
    alert($(this).val());
    $.mobile.changePage($("#about"), "slideup");
});

Когда пользователь меняет выбор, предупреждение срабатывает, и теоретически следует отправить их в следующий jqueryobject.

    <div data-role="page" id="about" data-id="about">  
    <div data-role="header" data-position="fixed" data-nobackbtn=”false”><h1>About Us</h1></div>
    <div data-role="content">
        <p>Information about the company</p>
    </div> 
    </div>  

Объект нормально работает с обычными ссылками

<span><a href="#about" data-transition="fade">About Us</a></span>

Но я не могу заставить его загружаться программно в браузере или в промежутке между телефонами.

Anyидеи?Должно быть, я искал API миллион раз.

Полный HTML-код выглядит следующим образом:

<!DOCTYPE HTML>
<html>
<head>
<title>Header</title>
<script type="text/javascript" charset="utf-8" src="js/phonegap-0.9.3.js"></script>


<link rel="stylesheet" href="css/jquery.mobile-1.0a1.min.css" /> 
<script src="js/jquery-1.4.3.min.js"></script> 
<script src="js/jquery.mobile-1.0a1.min.js"></script>
<script src="js/mycustomjs.js"></script>

<script type="text/javascript">


// PhoneGap is loaded and it is now safe to make calls PhoneGap methods
//
function onDeviceReady() {

        function reachableCallback(reachability) {
            // There is no consistency on the format of reachability
            var networkState = reachability.code || reachability;

            var states = {};
            states[NetworkStatus.NOT_REACHABLE]                      = 'No network connection';
            states[NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK] = 'Carrier data connection';
            states[NetworkStatus.REACHABLE_VIA_WIFI_NETWORK]         = 'WiFi connection';

            alert('Connection type: ' + states[networkState]);
        }

        navigator.network.isReachable('phonegap.com', reachableCallback);


}

</script>  

</head>
<body>




<!-------------- INDEX PAGE ------------------------------------>
<div data-role="page" id="home">  
    <div data-role="header" data-position="fixed" data-nobackbtn=”false”>
            <h1 header</h1>
    </div>

    <div data-role="content">
    <p>Thank you for downloading our app</p>
        <div data-role="fieldcontain">
                <label for="selection" class="select">Please select an industry</label>
                <select name="selection" id="selection">
                        <option value="choice1">choice1</option>
                </select>
        </div>
    </div> 
</div>  

<!-------------- ABOUT PAGE ------------------------------------>
<div data-role="page" id="about" data-id="about">  
    <div data-role="header" data-position="fixed" data-nobackbtn=”false”>
            <h1>About Us</h1>
    </div>

    <div data-role="content">
        <p>Information about the company</p>
    </div> 

 </div>  

</body>
</html>

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Я думаю, вам нужно, чтобы опции были объектом, а не строкой.

Так что, возможно, попробуйте свой код с:

$.mobile.changePage($("#about"), { transition: "slideup"});
1 голос
/ 23 августа 2011

Вы используете jquery-mobile 1.0 alpha 1, который, по-видимому, имел значительно другой API. Например, changePage имел следующую подпись [1]:

function changePage( from, to, transition, back )

Что я предполагаю (хотя и не пытался), вы можете использовать как

$.mobile.changePage($('#home'), $('#about'), 'slide-up', false);

Хотя я думаю, что было бы лучше перейти на бета-версию 1.0 (последний выпуск), если только несовместимость с телефонной пробкой не помешает вам использовать ее (насколько я знаю, ее нет). Если вы обновитесь, приведенный выше код должен хорошо работать.

. [1]: https://github.com/jquery/jquery-mobile/blob/1.0a1/js/jquery.mobile.js#L159

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...