2

私のアプリケーションlistView('refresh')では動作しません。これが私のコードです

listView を動的に作成します

 var str = "<ul data-role='listview' data-inset='true' id='mylist'>";

        for(var i = 0; i<data.length; i++ ){
            str += "<li>"+data[i].note.text+"</li>";
        }
       str += "</ul>"

        $('#content').append(str);

function addnote(){
    var note_text = $('#note_text').val();
    var note_lat  = $('#lat').val();
    var note_lng  = $('#lng').val();

    $.ajax({

        type: "POST",
        beforeSend: function (jqXHR) {
            jqXHR.setRequestHeader(KEY1, _key1);
            jqXHR.setRequestHeader(KEY2, _key2);
        },

        url:SERVER_URL+"api/addNotes/",



        data: {type: 'text',note_text: note_text, note_lat: note_lat , note_lng: note_lng},

        success: function(data, textStatus, jqXHR) {
            if (data.status == "ok"){

                $.mobile.changePage("file:///android_asset/www/index.html?"+_key1+"|"+_key2+"|");


             }
            else{
                alert("Something wrong");
            }

        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert("Error=" + errorThrown);
        },

        complete: function() {
            $('#mylist').listview('refresh');

        }
    });
}

そこにある多くのレポートとフォーラムを読んで、ajax の完全な関数で listview('refresh') を呼び出さなければならないと言っていました。しかし、私のコードでは機能しません。ここで何が問題なのか誰か教えてもらえますか?

4

4 に答える 4

2

更新は、既存の拡張リストビューに要素を追加する場合に使用します。リストビュー全体を動的に作成する場合は、親 div で「作成」をトリガーする必要があります。

をお持ち<div id="container><ul></ul></div>の場合は、 に電話する必要があります$("#container").trigger("create")

于 2012-06-01T15:05:34.947 に答える
0

いくつかの値を追加した後、おそらくデータを見たいと思うでしょう。このlistview.refreshを実行したい場合は、いくつかの値を追加した後、データを再度呼び出す必要があります。つまり、getNote()を再度呼び出す必要があります。

私はそれが役立つと思います。

于 2012-06-04T13:35:38.177 に答える
0

First of all , You must understand how does the refresh work, it will just refresh the listview's css when you add a new LI so that the new LI will have a right css,

function createItem(tx,results){
var len = results.rows.length;
console.log("lisitem len "+len);
for(var i = 0;i<len;i++){
    var content = results.rows.item(i).content;
    var id = results.rows.item(i).id;
    var string = '<li><a href="#all_content" data-rel="popup" onclick="getContent('+id+');" class="ui-link-inherit">'+content+' ['+results.rows.item(i).date+']</a></li>';
    $("#all_list").append(string);
};
freshList("all_list");

}

freshList("all_list"); it will refresh the listview ,if you don't do it, all of the LI will display like below.

<li><a href="#all_content" data-rel="popup" onclick="getContent(2);" class="ui-link-inherit">           测试成功         [2013-10-02]</a></li>

the LI doesn't have a css description

that's why your ajax operation doesn't work

于 2013-10-02T09:32:11.393 に答える
0

代わりにこれを試して機能を完了してください

complete: function() {
    $('#mylist').listview();
}

他の誰かが言及しているように、更新方法は、JQM が既に作成したリストビューにリスト項目を追加する場合のためのものです。

于 2012-06-01T19:53:32.463 に答える