listview('refresh')不起作用

时间:2012-06-01 14:48:45

标签: ajax jquery jquery-mobile

在我的应用程序中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 个答案:

答案 0 :(得分:2)

刷新适用于向现有增强型列表视图添加元素的情况。如果要动态创建整个列表视图,则需要在父div上触发“创建”。

因此,如果您有<div id="container><ul></ul></div>,则需要致电$("#container").trigger("create")

答案 1 :(得分:0)

尝试使用此功能来完成功能

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

正如其他人提到的那样,刷新方法适用于将列表项添加到JQM已创建的列表视图中。

答案 2 :(得分:0)

您可能希望在添加一些值后查看数据。如果你想这样做listview.refresh在添加一些值后没有帮助你,你必须再次调用你的数据,即你必须再次调用getNote()。

我认为这有帮助。

答案 3 :(得分:0)

首先,您必须了解刷新是如何工作的,它只会在您添加新LI时刷新listview的css,以便新LI具有正确的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”);它将刷新列表视图,如果你不这样做,所有的LI将显示如下。

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

LI没有css描述

这就是你的ajax操作不起作用的原因