jquery-mobile列表视图 - >刷新事件

时间:2012-02-22 08:29:59

标签: javascript jquery jquery-mobile cordova

我看过其中一些帖子与此类似,所以如果这是重复的话,我很抱歉。

我在提取一些数据时有这个代码,但我似乎无法弄清楚为什么我的列表没有刷新...任何可能的解决方案?这是我的JS。

/* VARIABLES
-------------------------------------------------------------------- */
var serviceUrl = "http://localhost/app/services/";
var serviceToLoad = "homeList.php";

var home;
var pageId    = "#homePage";
var contentId = "#homeList";


/* JQUERY
-------------------------------------------------------------------- */
$(pageId).live('pageshow', function(event){
    getHomeList();
});


/* FUNCTION SET
-------------------------------------------------------------------- */
function getHomeList() {

    $.getJSON(serviceUrl + serviceToLoad, function(data) {

        // Remove all content first
        $(contentId +' li').remove();

        // Load Data
        $.each(data.items, function(index, list){
            $(contentId).append('<li><a href="#">' + list.name + '</a></li>\n');
        });

    });

    // Reload View
    $(contentId).listview('refresh');
}

这是我的HTML页面

<div id="homePage" data-role="page" >
    <div data-role="header" data-position="fixed"><h1>Home</h1></div>

    <div data-role="content">
         <ul id="homeList" data-role="listview"></ul>
    </div>
</div>

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:4)

Ajax调用是异步所以,将刷新列表视图置于 jSON调用中!

/* VARIABLES
-------------------------------------------------------------------- */
var serviceUrl = "http://localhost/app/services/";
var serviceToLoad = "homeList.php";

var home;
var pageId    = "#homePage";
var contentId = "#homeList";


/* JQUERY
-------------------------------------------------------------------- */
$(pageId).live('pageshow', function(event){
    getHomeList();
});


/* FUNCTION SET
-------------------------------------------------------------------- */
function getHomeList() {

$.getJSON(serviceUrl + serviceToLoad, function(data) {

    // Remove all content first
    $(contentId +' li').remove();

    // Load Data
    $.each(data.items, function(index, list){
        $(contentId).append('<li><a href="#">' + list.name + '</a></li>\n');
    });

    // Reload View
   $(contentId).listview('refresh')
});
}

答案 1 :(得分:1)

将行添加到列表后,执行

var contentDiv=$(".ui-page-active div[data-role*='content'] ul");
contentDiv.listview("refresh");

答案 2 :(得分:0)

试试这个$(contentId).listview('refresh',true); 。并确保在ul元素上调用.listview