1

最初はタイピングエラーがあったら申し訳ありませんが、英語は私の主な言語ではありませんが、最善を尽くして説明するように努めています。

ノートデータベースを使用したテストアプリに取り組んでいます。追加と削除で問題なく動作しますが、小さな問題があります...(edit.htmlに)メモを追加して、index.htmlページに戻りたいのですが、戻っていません。私は複数のdata-page-roleページを操作しているので、各ページには独自のIDがあります。ノートデータベースに使用するコード:

index.htmlヘッダー:

$("#homePage").live('pageinit', function() {
init();
});

index.htmldata-page-role

<div data-role="page" id="homePage" data-add-back-btn="true" class="noteclass">
<!-- HEader -->
<div data-role="header" >
    <h1>Notitie Database</h1>
</div>
<!-- Main content div -->
<div data-role="content" id="mainContent">
    <ul data-role="listview" id="noteTitleList"></ul><br />
</div>
<div data-role="content">
    <a href="edit.html" data-role="button" data-icon="plus">Voeg notitie toe</a>
</div>
<!-- Footer -->
<div data-role="footer" id="footer"> <img src="a12.png" />
    <p>&copy; 2012 - Swen Kooij / Paksha Thullner / Johnny Jansen</p>
</div>
</div>

Edit.html(ここでメモを追加/変更/削除できます)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div data-role="page" id="editPage">
<!-- HEader -->
<div data-role="header">
    <h1>Write Note</h1>
</div>
<script type="text/javascript">
$(document).ready(function() {
    $('#Delete').click(function() {
        DeleteNote($('#noteId').val());
    });

    $('#addNote').click(function() {
        var data = {title:$("#noteTitle").val(), 
                body:$("#noteBody").val(),
                id:$("#noteId").val()
        };
        saveNote(data);             
    });     
});
</script>
<div data-role="content">   
    <form id="editNoteForm" method="post">
        <input type="hidden" name="noteId" id="noteId" value="">
        <div data-role="fieldcontain">
            <label for="noteTitle">Title</label>
            <input type="text" name="noteTitle" id="noteTitle">
        </div>
        <div data-role="fieldcontain">
            <label for="noteBody">Note</label>
            <textarea name="noteBody" id="noteBody"></textarea>
        </div>
        <div data-role="fieldcontain">
            <button id="addNote">Opslaan</button>
        </div>
    </form>
    <button id="Delete">Verwijder</button>
</div>
<a href="index.html#homePage" data-role="button" data-icon="home">Ga terug</a>
<!-- Footer -->
<div data-role="footer" id="footer"> <img src="a12.png" />
    <p>&copy; 2012 - Swen Kooij / Paksha Thullner / Johnny Jansen</p>
</div>
</div>
</body>
</html>

そして、これが私がノートデータベースに使用するバックエンドコードです

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
phoneready();
}

function setupTable(tx){
tx.executeSql("CREATE TABLE IF NOT EXISTS notes(id INTEGER PRIMARY KEY,title,body,updated)");
}   

function getEntries() {
dbShell.transaction(function(tx)
{
    tx.executeSql("select id,title,body, updated from notes order by id asc", dbErrorHandler, renderEntries)
}, function(){ alert ("Error getentries"); 
});

}


function renderEntries(tx,results){
if (results.rows.length == 0) {
    $("#mainContent").html("<p>Je hebt nog geen notities.</p>");
} else {
   var s = "";
   for(var i=0; i<results.rows.length; i++) {
     s += "<li><a href='edit.html?id="+results.rows.item(i).id + "'>" + results.rows.item(i).title + "</a></li>";   
   }
   $("#noteTitleList").html(s);
   $("#noteTitleList").listview("refresh");
}
}

function saveNote(note) {

//Sometimes you may want to jot down something quickly....
if(note.title == "") note.title = "[Geen Titel]";
dbShell.transaction(function(tx) {
    if(note.id == "") 
    {
        tx.executeSql("insert into notes(title,body,updated) values(?,?,?)",[note.title,note.body, new Date()]);
    }
    else
    {
         tx.executeSql("update notes set title=?, body=?, updated=? where id=?",[note.title,note.body, new Date(), note.id]);
    }
}, function(){ alert ("Error savenote");}, 
    function()
    {
        window.navigator.location("index.html#homePage");
    });
}

function DeleteNote(id){
    dbShell.transaction(
    function(tx)
    {
        tx.executeSql('Delete FROM notes where id=' + id);
    },
        function(){ alert ("Error deletenote");},
    function(err)
    {
        window.navigator.location("index.html#homePage");
    });
}

function phoneready(){
dbShell = window.openDatabase("SimpleNotes", 2, "SimpleNotes", 1000000);
setupTable();   
}

function init(){
getEntries();

//edit page logic needs to know to get old record (possible)
$("#editPage").live("pagebeforeshow", function() {
    //get the location - it is a hash - got to be a better way
    var loc = window.location.hash;
    if(loc.indexOf("?") >= 0) {
        var qs = loc.substr(loc.indexOf("?")+1,loc.length);
        var noteId = qs.split("=")[1];
        //load the values
        dbShell.transaction(
            function(tx) {
                tx.executeSql("select id,title,body from notes where id=?",[noteId],function(tx,results) {
                    $("#noteId").val(results.rows.item(0).id);
                    $("#noteTitle").val(results.rows.item(0).title);
                    $("#noteBody").val(results.rows.item(0).body);
                });
            }, dbErrorHandler);

    }
});
}

saveNoteとdeleteNoteで確認できるように、関数window.navigator.location( "index.html#homePage");を呼び出します。$ .mobile.changePage( "index.html#homePage");で試した限り、これを実行しました。戻りますが、init()は実行されません。ヘッダースクリプトで機能します。私はそれをすべて正しく説明したことを望みます、そして何か質問があれば私に知らせてください。それでは、それを説明するために最善を尽くします。

編集:詳細情報:

最初はあなたの答えに感謝します、私は複数のデータロールページを手に入れました。

追加の例:

<div data-role="page" id="page5" data-add-back-btn="true">
<!-- Header --> 
<div data-role="header" >
<h1>Locatie</h1>
</div>
<!-- Main content div -->
<div data-role="content">   
<p id="geolocation" onClick="onDeviceReady()">Op zoek naar uw locatie ...</p>
<img src="" id="map" width="100%" height="" />
<h4>Omgeving</h4>
<img src="" id="map2" width="100%" height="" />
</div>
<div data-role="footer" id="footer"> <img src="a12.png" />
<p>&copy; 2012 -  Swen Kooij / Paksha Thullner / Johnny Jansen</p>
</div>
</div>
4

2 に答える 2

1

ディープリンク「index.html#homePage」でページを変更しようとしています。JqueryMobileはそれをサポートしていません。ファイルを渡すと、彼はそのファイルの最初のページのみをロードします。つまり、「index.html#homePage」を渡すと、彼は「index.html」のみを考慮し、そのファイルの最初のページをロードします。

確かなことはわかりませんが、index.htmlファイルに「homePage」しかない場合は、関数window.navigator.locationを次のように変更してください。

$.mobile.changePage("index.html")

そしてもちろん、アンカータグについても同じことを行います。

于 2013-01-15T14:22:47.500 に答える
0

私が使う:

window.location = "#home";

于 2013-01-15T16:27:40.130 に答える