Сохранение данных с помощью jqMobi - PullRequest
1 голос
/ 01 февраля 2012

Что ж, я перебрал поиск в Google и перебрал стек, и на данный момент у меня нет четкого представления о том, как это сделать.

Мне бы хотелосьсоздать программу To Do для iphone с использованием jqMobi + CSS + HTML 5. Я работал с jQuery, провел некоторое время с jQuery Mobile и проделал тонны CSS и HTML (хотя мало работал с HTML5).Что мне нужно сделать, это сохранить списки, которые пользователь генерирует при открытии программы.

У меня нет проблем с динамическим созданием и связыванием страниц ... но когда вы открываете программу,во второй раз все созданные мной страницы (элементы IE To Do) исчезают.Я понимаю, что это потому, что они не были написаны как часть базовой программы.Мне приходит в голову, что способ обойти это сохранить эти списки в файл или БД, а затем загрузить их при запуске программы.

Я видел документацию для этого с помощью Titanium Studio (она поддерживает SQL lite), но генерация страниц и общий пользовательский интерфейс - отстой.Кроме того, запуск эмулятора из этого кода доставил мне много хлопот.По крайней мере, я могу сказать, что использование приложения appMobi для тестирования дает вам хороший эмулятор для работы до того, как вы перенесете код в скомпилированное состояние.

В любом случае, кто-нибудь знает, как настроить сохранение данных (между перезапусками программы) для jqMobi + CSS + HTML 5 с БД или генерацией файла?

РЕДАКТИРОВАТЬ x2: Так как я вас на крючке @ian, можете посмотретьа этот код и скажите мне, почему $ .ui.addContentDiv () не обновляет содержимое?$ (# Содержание) .append (строка);Похоже, не хочет сотрудничать.Есть ли какая-то функция, которую мне нужно вызвать, чтобы она обновилась?Удалил это немного, все еще имеющие проблемы.Как ни странно, добавление в список работает просто отлично, но когда я пытаюсь добавить этот слой div, он не существует ...

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

function genPage( id, list, parent ) {
    var content = '<div id="' + id + '" class="panel">' + id + '</div>';    
    var threadLink='<li><a href="#' + id +'">' + id + '</a></li>';      
    $("#" + list).append(threadLink);
    $("#content").append(content);

    //$.ui.addContentDiv(id, content, id);
}

Ответы [ 3 ]

2 голосов
/ 01 февраля 2012

Я ведущий разработчик jqMobi, поэтому я буду рад помочь с вопросами.

Я работаю над мини-списком задач в качестве демонстрации для версии 1.0.Я хотел бы сохранить данные в виде строкового объекта JSON в window.localStorage

Но если это приложение appMobi, то у нас есть AppMobi.cache.cookies, которые похожи.Единственное отличие состоит в том, что AppMobi.cache позволяет хранить больше данных.

Не стесняйтесь проверить http://forums.appmobi.com, чтобы получить дополнительную помощь.

1 голос
/ 09 апреля 2012

Вы думали об использовании PhoneGap?Он имеет библиотеку базы данных, которую вы можете использовать для сохранения всех ваших данных в базе данных sqlite.http://docs.phonegap.com/en/1.5.0/phonegap_storage_storage.md.html#Database

0 голосов
/ 02 февраля 2012

Вот мой первый взлом, чтобы заставить работать json и cookie, кому бы это ни показалось полезным. Это всего лишь прототип, поэтому он мало что делает. Ради простоты я вырезал дополнительный javascript, добавленный средой разработки AppMobi.

РЕДАКТИРОВАТЬ: Похоже, JSON работает очень хорошо для структуры данных, если вы не пытаетесь делать что-то особенно интенсивно с данными. Кроме того, похоже, что appMobi AppMobi.cache хорошо работает с файлами cookie. Вот мой мини-скрипт для демонстрации основных манипуляций с cookie / JSON-строк.

Код:

<!DOCTYPE html><!--HTML5 doctype-->
<html>
<head>
<title>Your New Application</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
<style type="text/css">
    /* Prevent copy paste for all elements except text fields */
    *  { -webkit-user-select:none; -webkit-tap-highlight-color:rgba(255, 255, 255, 0); }
    input, textarea  { -webkit-user-select:text; }

    /* Set up the page with a default background image */
    body {
        background-color:#fff;
        color:#000;
        font-family:Arial;
        font-size:48pt;
        margin:0px;padding:0px;
        background-image:url('images/background.jpg');
    }
</style>
<script type="text/javascript" charset="utf-8" src="http://localhost:58888/_appMobi/appmobi.js"></script> 
<script type="text/javascript" charset="utf-8" src="http://localhost:58888/_appMobi/xhr.js"></script> 
<script type="text/javascript">

function setCookie() {
    var value = document.getElementById('cookie').value;
    AppMobi.cache.setCookie("test", value, 1);
}

function testbed() {
alert("Trying new things!");
var jsonobj = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

var test = jsonobj.bindings[0].method;
alert(test);
}

function getCookie(){
    var cookie = AppMobi.cache.getCookie("test");
    document.getElementById("cookievalue").innerHTML = cookie;
}

</script>

</head>
<body>
<form action="javascript: setCookie()">
<input type="text" id="cookie" value="set a cookie">
<input type="submit">
</form>

<p id="cookievalue"></p>

<form action="javascript: getCookie()">
<input type="submit" value="Get a Cookie">
</form>

<form action="javascript: testbed()">
<input type="submit" value="try new things">
</form>
</body>
</html>
...