下面的代码显示了一个函数cacheListPrint()
,该函数使用Phonegap从JQuery Mobile框架的“主页”页面上的按钮的onclick
元素调用。
下面的HTML显示了从“主页”页面的href
元素加载的目标网页。
cacheListPrint()
函数从SQLLite数据库中检索数据,该数据库随后用于动态创建和填充无序列表作为JQuery viewlist
元素。
页面加载时,视图列表未格式化,只显示从数据库中检索的每个元素的文本标题和图像。数据正在显示,并且与数据库请求的内容一致 - 因此我知道列表已成功创建,但无法正确呈现。
我尝试过使用$('#placeslist').viewlist();
& $('#placeslist').viewlist('refresh');
位于当前.trigger('create')
引用的位置。它们都不起作用。我还尝试将.trigger('create')
语句移到宣布<ul>
的下方的行。
此外,在调用viewlist(...)
函数之一时,Eclipse调试终端会抛出以下错误:
Uncaught TypeError: Object [object Object] has no method 'listview'
- 显然表明viewlist
是一种未知的方法调用。
function cacheListPrint() {
db.transaction(queryDBPrint, errorCB);
}
function queryDBPrint(tx) {
tx.executeSql('SELECT * FROM cache', [], querySuccessPrint, errorCB);
}
function querySuccessPrint(tx, results) {
$('#placeslistcontainer').empty();
$('#placeslistcontainer').html('<ul id="placeslist" data-filter="true"></ul>');
$.each(results.rows, function(index){
var row = results.rows.item(index);
$("#placeslist").append('<li><a href="#"><h1>'+row['name']+'</h1><img src="'+row['image']+'" /></a></li>');
});
$("#cachelist").trigger('create');
}
function errorCB(err) {
alert("Error processing SQL: "+err.code);
}
<div data-role="page" id="cachelist" data-transition="none"> <!-- Start of cache list screen -->
<header data-role="header">
<h1>Cache List</h1>
<a href="#home" data-icon="home" data-transition="none">Home</a>
</header>
<div data-role="content" id="placeslistcontainer">
</div>
<footer data-role="footer" data-position="fixed">
</footer>
</div> <!-- End of cache list screen -->
我已经通过JQuery Mobile API进行了相当广泛的阅读,花了几个小时来搜索这个问题 - 在考虑这些问题时,很多建议都是有意义的,但在实施时却不起作用。我对实现建议非常有信心,但JQuery和Javascript对我来说是相对较新的语言 - 因此我们将非常感谢所需的基本细分。
答案 0 :(得分:1)
试试这个,看看
$("#placeslistcontainer ul").listview();
当你更新现有的列表视图时, listview("refresh");
似乎有效。
答案 1 :(得分:0)
我有同样的错误消息。在我将所有应用程序代码包装在deviceready事件中后修复了我,因为Phonegap说重要:http://docs.phonegap.com/en/2.9.0/cordova_events_events.md.html#Events