1

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

我收到此错误:

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 调用后刷新三个列表视图。我正在使用 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 刷新列表视图,但这也无济于事。

提前致谢。

4

2 回答 2

1

这个问题很容易解决。

用这个:

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

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

如果你想找到更多关于这个问题的信息,你可以在这篇文章中找到它,老实说这是我的个人博客文章。或者在这里找到它。查找名为:标记增强问题的章节

于 2013-03-01T20:52:24.020 回答
1

尝试如下

$('#person-info-wrapper ul').listview();
$('#person-related-wrapper ul').listview();
$('#person-groups-wrapper ul').listview();
$('#person-notes-wrapper ul').listview();
于 2013-03-01T20:54:07.167 回答