Подсказка из вышеприведенного примера показывает, как я смог добавить кнопку «Назад» в свои вложенные списки.
Что я делал, это добавлял родительский listview () при определенных условияхзатем добавление дочерних списков () только при наличии определенных данных.
В зависимости от ситуации у меня может быть от 0 до 5 дочерних просмотров.
например:
self.cont.append($("<ul id='addtlInfo' />"));
self.loadMeds(self.cont.attr("id"));
self.loadContacts(self.cont.attr("id"));
self.loadDX(self.cont.attr("id"));
$.mobile.page.prototype.options.addBackBtn = true;
self.cont - это просто DIV на странице, где я добавляю свои объекты jQuery.
Каждый из методов .loadXXX выглядит в основномнапример:
self.loadMeds = function (client_id) {
if (!$("#clientMeds").exists()) {
cw.ds.executeSQL("SELECT * FROM CLIENTS_MEDS WHERE client_id = ?", [client_id], self.appendMeds);
};
};
self.appendMeds = function (tx, r) {
var $meds = $("<li>Medications</li>");
var $medlist = $("<ul />");
var rs, meds, med = "";
var m = 0;
if (r.rows.length > 0) {
for (var i = 0; i < r.rows.length; i++) {
rs = r.rows.item(i);
meds = rs.data.split("\n");
for (var j = 0; j < meds.length; j++) {
med = med + meds[j] + "<br />";
if (m == 2) {
$medlist.append($("<li>" + med + "</li>"));
med = "";
m = -1;
};
m++;
};
};
};
$meds.append($medlist);
var $m = $("<ul id='clientMeds' />").append($meds);
$("#addtlInfo").append($("<li />").append($m));
$("#clientMeds").listview();
};
Как видите, после добавления каждого дочернего списка я вызываю метод listview ().Это привело к появлению родительского списка с отдельными дочерними списками.
Проблема заключалась в том, что, если бы я щелкнул любой из элементов в родительском списке (), я мог просмотреть дочерние элементы, как ожидалось, но не было никакого способавернуться к родительскому списку.Это действительно стало проблемой, когда я тестировал свой код на iPad (так как нет встроенной кнопки BACK. @ По крайней мере, на Droid есть кнопка возврата назад).
Когда я попробовал первое исправление: data-add-back-btn = "true", это не сработало, как ожидалось.
Второе исправление;
<script type="text/javascript">
$(document).bind("mobileinit", function() {
$.mobile.page.prototype.options.addBackBtn = true;
});
</script>
Не показалось мне элегантным, поскольку оно было шириной страницы.Я пытался повлиять только на эту настройку, ЕСЛИ там действительно будет вложенный список, и был приятно удивлен, когда он просто работал как ожидалось.