0

我有一个从 JSON 文件动态生成的列表视图,如下所示:

$.getJSON('test2.json', function(data) {
                var items = [];
                $.each(data, function(key, val) {
                    items.push('<li data-theme="c" data-icon="myapp-arrow" class="test1"><a href="#dataviewer" data-transition="slide"><p>' + key + '</p>' + val + '</a></li>');
                });
                $('<ul/>', {'data-role' : 'listview','id': 'my-new-list', 'data-divider-theme':'a', 'data-inset': 'false',html: items.join('')}).appendTo('.container');
                alert('Here is where the refresh should fire!');
                $("#my-new-list").listview("refresh");
            });

它将列表项添加到页面,但根本不设置样式。使用 Chromes 检查器,如果我将列表代码复制并粘贴到我的 html 文档中,它的样式就很好。我究竟做错了什么?

4

2 回答 2

2

试试$('.ui-page').trigger("create");。如果尚未创建列表视图,则无法刷新它。

于 2012-04-24T10:11:29.107 回答
0

将函数绑定到页面初始化并从 .listview() 方法中删除“刷新”解决了我的问题。据我所知,在此初始函数之后的任何其他列表构建都应包括 ('#page-id').listview(refresh); 它应该更新得很好。

$( '#searchpage' ).live( 'pageinit',function(){
                $.getJSON('test2.json', function(data) {
                    var items = [];
                    $.each(data, function(key, val) {
                        items.push('<li data-theme="c" data-icon="myapp-arrow" class="test1"><a href="#dataviewer" data-transition="slide"><p>' + key + '</p>' + val + '</a></li>');
                    });
                    $('<ul/>', {'data-role' : 'listview','id': 'my-new-list', 'data-divider-theme':'a', 'data-inset': 'false',html: items.join('')}).appendTo('.container');
                $("#my-new-list").listview();               
                });
            });

感谢 codaniel 将我推向正确的方向

于 2012-04-25T08:55:12.447 回答