jQuery Mobile динамически заполняет список, используя ajax и API книг Google

Я делаю приложение jQuery Mobile/Phonegap с двумя страницами. На первой странице есть ввод для поиска, где пользователь может добавить название книги или автора, а затем на второй странице отображаются результаты в зависимости от того, сколько из них соответствует заданному значению.

До сих пор мне удалось получить значение из ввода поиска и успешно получить значение на второй странице.

Мой код jQuery находится во внешних файлах и добавляется в файл index.html между jQuery.js и jQuerMobile.js.

     //this is from the first page
    // capture the user input, and change page to search_results.html
    function handlePageChange() {
        if ($('#search-1').val().length > 0) {
            $.mobile.changePage('search_results.html', {
                dataUrl : "search_results.html",
                data : {
                    'input' : $('#search-1').val()
                },
                reloadPage : false,
                changeHash : true
            });
        } else {
            alert('Search input is empty!');
        }
    }



     //Handle the page-change action after user has pressed the button = changePage
        $(document).on('pagebeforeshow', "#index", function() {
            $(document).on('click', "#changePage", handlePageChange);
        });

 //this is from second page     
// get data from search input form index.html 
    function getSearchValue() {
        var parameters = $(this).data("url").split("?")[1];

        parameter = parameters.replace("input=", "");
        alert(parameter);

    }

    //Trigger after page is loaded
    $(document).on('pageshow', "#search_results", getSearchValue);

Но я застрял на двух вещах. Сначала глядя на jQueryMobile, я как будто смущаюсь, какое событие использовать для использования моего ajax-вызова API.

Должен ли я просто еще одна функция обратного вызова для существующего прослушивателя событий pageshow.

Затем я хочу заполнить свой listview результатами API Google Книг, но не могу найти хороших примеров.

И, по крайней мере, я хочу показать книги в listview с миниатюрой и названием, и когда кто-то нажимает на одну из книг, она будет переходить на другую страницу, где будет отображаться более подробная информация о книге.

Как я могу это сделать в зависимости от id.

Даже концепция без кода приветствуется. Спасибо


person Lali Pali    schedule 27.05.2013    source источник


Ответы (1)


Позвольте мне рассказать вам, как правильно, по крайней мере, при создании мобильного приложения jQuery.

  1. Ваша первая страница должна иметь форму, по крайней мере, если у вас больше элементов ввода. Но можно работать и без него.

  2. Вам понадобится элемент кнопки для инициализации поиска. При нажатии кнопки вы запускаете загрузчик ajax и инициируете вызов ajax. Только после успешного получения результата инициируйте смену страницы. В то же время результат будет храниться внутри локального хранилища или некоторой глобальной переменной.

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

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

У меня есть аналогичный рабочий пример, созданный для какого-то предыдущего ответа, я связываюсь с php-сервером вместо службы Google, но также используется вызов $.ajax, поэтому вы можете скопировать много кода.

Пример можно найти здесь: jQuery Mobile: отправка данных с одной страницы на другую, это два примера, и вы должны посмотреть на второй, который называется: Демонстрация аутентификации пользователя.

person Gajotres    schedule 27.05.2013
comment
Вы правы, только так я могу думать, что это выглядит естественно. Пока вы показываете загрузчик ajax, чтобы пользователь мог видеть, что что-то происходит. - person Gajotres; 27.05.2013
comment
Процесс хранения и передачи данных подробно объясняется в моем другом ответе: title="jquery mobile document ready vs page events"> stackoverflow.com/questions/14468659/ просто найдите главу: Манипулирование данными/параметрами между переходами страниц - person Gajotres; 27.05.2013
comment
Что делать, если на шаге 3 я использую pagebeforeshow, поскольку я динамически создаю только список, а не весь раздел content. Влияет ли это на скорость? - person Lali Pali; 02.06.2013