jQuery Mobile:Listview刷新时出错

时间:2013-03-01 20:47:30

标签: jquery-mobile

我见过很多人都有这个问题,但由于某种原因,我无法找到有效的解决方案。

我收到了这个错误:

Uncaught Error: cannot call methods on listview prior to initialization; attempted to call method 'refresh' 

以下是正在发生的事情的细分。

我正在约束这个事件:

$('#person').bind('pagebeforeshow', function(e, data){
    Person.getPersonData();
});

在getPersonData()方法中,我使用下划线_.after函数渲染模板,并在完成所有ajax调用后刷新三个listviews。我正在使用Knockout.js来应用一些数据绑定。

var tmplMarkup = $('#tmpl-person').html();
var compiledTmpl = _.template( tmplMarkup, {data: Person.data} );
$('#person-wrapper').html(compiledTmpl);
$('#person-info-wrapper').listview('refresh');
$('#person-related-wrapper').listview('refresh');
$('#person-groups-wrapper').listview('refresh');
$('#person-notes-wrapper').listview('refresh');
ko.applyBindings(Person.data, document.getElementById('person-notes-form'));

我不确定我在这里做错了什么。我试过绑定到不同的页面加载事件,没有运气。在调用ajax之后几秒钟我甚至尝试使用setTimeOut刷新列表视图,但这也无济于事。

提前致谢。

2 个答案:

答案 0 :(得分:1)

这个问题很容易解决。

使用此:

$('#listview-id').listview().listview('refresh');

#listview-id 是您的列表视图ID(或任何其他参考),首先 listview() 会初始化它,第二个会刷新它

如果您想了解有关此问题的更多信息,可以在 ARTICLE 中找到它,说实话,这是我的个人博客文章。或者找到 HERE 。查找名为“标记增强问题

的章节

答案 1 :(得分:1)

尝试如下

$('#person-info-wrapper ul').listview();
$('#person-related-wrapper ul').listview();
$('#person-groups-wrapper ul').listview();
$('#person-notes-wrapper ul').listview();