Передача параметров на идентификатор страницы в jQuery Mobile - PullRequest
17 голосов
/ 23 ноября 2011

Я пытаюсь передать некоторые параметры идентификатору страницы, созданному в jQuery Mobile.

Сайт состоит из списков с ссылками, в каждом из которых есть закодированный хэш, например::

<li><a href="#pronostico?region=12&ciudad=0">Puerto Natales</a></li>

Я связал pagebeforechange, чтобы перехватывать хэши в URL, выполнять определение параметров и предпринимать действия в зависимости от количества переданных параметров.

Теперь с файлами cookie ямы пробовали это:

$(document).one("pageinit", function(event, data) {
  if (location.hash.search(/^(#ciudades|#pronostico)/) === -1) {
    if ($.cookie("recordar")) {
      $.mobile.changePage($("#pronostico"), {
        data: "region=" + $.cookie("region") + "&ciudad=" + $.cookie("ciudad")
      });
    }
  }
});

Но он просто передает меня на #pronostico идентификатор страницы, без параметров в хэше.В результате я получаю страницу без информации, которую она должна показывать.

Заранее спасибо.

Ответы [ 3 ]

31 голосов
/ 28 ноября 2011

Да, параметры в хэше не поддерживаются по умолчанию. Я использовал следующий плагин, чтобы дать мне это, и он работает довольно хорошо; -)

jqm.page.params

ОБНОВЛЕНИЕ - КАК ИСПОЛЬЗОВАТЬ:

Я добавил следующий код после включения jqm.page.params.js:

$(document).bind("pagebeforechange", function( event, data ) {
    $.mobile.pageData = (data && data.options && data.options.pageData)
        ? data.options.pageData
        : null;
});

Так, например, страница вызывается как: index.html # search? Id = mysearchkeyword Теперь я могу получить доступ к этой информации в ЛЮБОЙ странице событий, я чувствую, что:

$(document).on("pagebeforeshow", "#firstpage", function(e, data){ 
        if ($.mobile.pageData && $.mobile.pageData.id){
            console.log("Parameter id=" + $.mobile.pageData.id);
        }
 });

Выведет "mysearchkeyword" на вашу консоль регистрации.

Надеюсь, это поможет!

PS: обратите внимание, что я никоим образом не связан с плагином или его автором

Примечание редактора: Автор имел это как второй блок кода. В Jquery 1.9 live удален, поэтому я обновил его пример выше с помощью синтаксиса .on. Вот оригинал:

$("#firstpage").live("pagebeforeshow", function(e, data){
    if ($.mobile.pageData && $.mobile.pageData.id){
        console.log("Parameter id=" + $.mobile.pageData.id);
    }
});
2 голосов
/ 29 сентября 2014

Плагин не поддерживает закладки. Если вы добавите обработчик смены страницы, вы можете исправить это, поместив параметры обратно в URL после того, как jQM выполнит с ним:

// list of inner pages where you want to support params AND bookmarking
// maybe better to use a CSS class name to mark them
var $paramPages;
$(document).ready(function() {
    $paramPages = $('#book, #order');
});

// put the params back into the location once jQM is done
//
$( document ).bind( "pagechange", function( e, data ) {
    if (data.toPage.is($paramPages) && data.absUrl) {
        window.location.replace(data.absUrl);
    }
});
0 голосов
/ 04 января 2016

Похоже, что одним из способов передачи параметров URL-адресов между страницами является использование подхода обработки хеша в этом примере из документов jQuery Mobile: http://demos.jquerymobile.com/1.4.1/navigation-hash-processing/

Это решение кажется идеальным, поскольку, в отличие от других решений, оно обновляет URL-адрес в адресной строке браузера, добавляя параметры URL-адреса при переходе между страницами. Этот подход также устраняет необходимость использования любых плагинов, таких как jqm.page.params.

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