jQuery Mobile $ .mobile.changePage разместить на странице - PullRequest
0 голосов
/ 15 июля 2011

Я использую jQuery Mobile для создания мобильного (очевидно) веб-сайта.У меня есть список элементов, которые создаются динамически на основе запроса AJAX.Это хорошо работает!

Следующее, что эти элементы списка должны ссылаться на другую «страницу», которая потребует отправки параметра на нее.

Код, который я использую:

$("#cwCountries [data-role='listview'] a").live("click", function() {
    var dataurl = $(this).data("url");
    if(dataurl != null) {
        $.mobile.changePage($("#cwCountrySpec"), {
            type: "post",
            data: dataurl
        });
    }
});

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

Я могу перехватить изменение вcwCountrySpec с этим кодом:

$("#cwCountrySpec").live('pagebeforecreate', function(event) {
    console.log(event);
});

Но когда я проверяю консоль, значение data возвращается как undefined.

Возможно ли это, и если да, то как?

Редактировать Ну, это позор ...

Я только что проверил документы jQuery Mobile Methods, и там говорится:

Используется только в том случае, когда аргумент 'to' в changePage () является URL-адресом.

Это отстой.Так как еще можно отправлять данные между сменами страниц?

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Как насчет установки значения dataurl в глобальную переменную, а затем получения значения этой глобальной переменной при загрузке страницы #cwCountrySpec.

var tmp_data;
$("#cwCountries [data-role='listview'] a").live("click", function() {
    var dataurl = $(this).data("url");
    if(dataurl != null) {
        tmp_data = dataurl;
        $.mobile.changePage($("#cwCountrySpec"));
    }
});
$("#cwCountrySpec").live('pagebeforeshow', function() {
    console.log(tmp_data);
});

-- РЕДАКТИРОВАТЬ ----

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

$("#cwCountrySpec").live('pagebeforeshow', function() {
    if ($("#cwCountrySpec div[data-role='content']").is(':empty')) {
        $("#cwCountrySpec div[data-role='content']").load(tmp_data);
    }
    console.log(tmp_data);
});
0 голосов
/ 15 июля 2011

Ну, это позор ...

Я только что проверил документы jQuery Mobile Methods, и там указано,

Используется только в том случае, если аргумент 'to' в changePage () является URL-адресом.

Это отстой. Так как еще я могу отправлять данные между сменами страниц?

Редактировать: Также кажется, что разработчики не хотят включать routes в состав фреймворка, в отличие от Sencha.

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