【问题标题】:Binding data to collapsible set in phonegap将数据绑定到phonegap中的可折叠集
【发布时间】:2013-05-13 07:11:53
【问题描述】:

我有一个可折叠集,我试图将查询结果作为列表视图附加到该集。但我无法将结果绑定为列表视图。

这就是我想要做的事情

function queryDB(tx) {
    tx.executeSql('SELECT * FROM FOLDER', [], querySuccess, errorCB);
}

function listdata(tx,results){
    list= ("<ul data-role='listview' data-inset='false' id='mylist' />");
    count = results.rows.length;
    $.each(results.rows,function(index){ 
        var row = results.rows.item(index);
        var li = '<li><a href="#">'+row['Date']+'</a></li>';
        list = $(list).append(li);
    });   
}

function querySuccess(tx, results) {    
    $.each(results.rows,function(index){ 
        var row = results.rows.item(index);

        tx.executeSql('SELECT Date FROM ALLIGNMENT WHERE name="'+row[name]+'"', [], listdata, errorCB);

        var div = '<div data-role="collapsible" data-inset="false" data-iconpos="right" data-collapsible="true" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d"><h3>'+
            row["name"]+'<span class="ui-li-count ui-btn-up-c ui-btn-corner-all" data-iconpos="right">10</span></h3></div>';

        $(list).appendTo(div).parent().appendTo('[data-role="content"]').end().trigger("create");
        $('div[data-role="collapsible"]').collapsible({theme:'c',refresh:true});
        $('[data-role="listview"]').listview().listview('refresh'); 
    });
} 

如果我尝试只显示一个可折叠的集合,我可以显示。但是当我尝试显示列表视图时,什么都没有显示。我在做什么错?

谢谢:)

新的功能结构

function queryDB(tx) {
tx.executeSql('SELECT * FROM FOLDER', [], querySuccess, errorCB);
}




 function listdata(tx,resultset){

   list = $("<ul>").attr({'data-role':'listview','data-inset':'false','id':'mylist'});
   count = resultset.rows.length;

    $(list).remove();

   $.each(resultset.rows,function(index){
    var row = resultset.rows.item(index);
   // alert(row['CreatedDate']);
     var li = '<li><a href="#">'+row['Date']+'</a></li>';
    list.append(li); 

    });



div = '<div data-role="collapsible" data-inset="false" data-iconpos="right" data-collapsible="true" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d"><h3>'+
 row1["name"]+'<span class="ui-li-count ui-btn-up-c ui-btn-corner-all" data-iconpos="right">'+count+'</span></h3></div>';
 }
list.appendTo(div).parent().appendTo('[data-role="content"]').end().trigger("create");
$('div[data-role="collapsible"]').collapsible({theme:'b',refresh:true});
$('[data-role="listview"]').listview().listview('refresh'); 

 }


function querySuccess(tx, results) {

$.each(results.rows,function(index){ 

   row1 = results.rows.item(index);

tx.executeSql('SELECT CreatedDate FROM ALLIGNMENT WHERE name="'+row1["name"]+'" ', [], listdata, errorCB);

});

} 

【问题讨论】:

  • 变量列表是全局变量吗?
  • @Gajotres 是的.. 变量列表是一个全局变量

标签: jquery sql cordova jquery-mobile jquery-mobile-listview


【解决方案1】:

您的函数 listdata 中有错误。

jQuery 对象不能这样创建:

list= ("<ul data-role='listview' data-inset='false' id='mylist' />");

首先,您之前缺少 $ 符号(但即使这样它也不起作用。

这样做:

var list = $("<ul>").attr({'data-role':'listview','data-inset':'false','id':'mylist'});

同样在这种情况下,您不需要像这样使用这一行:

list = $(list).append(li);

它不起作用,它应该是这样的:

list.append(li);

编辑:

您将需要进行其他更改。当你执行这一行时:

tx.executeSql('SELECT Date FROM ALLIGNMENT WHERE name="'+row[name]+'"', [], listdata, errorCB);

对函数 listdata 的调用是异步的。这意味着其余代码不会等待此函数运行。基本上你需要移动一些这样的行:

    var div = '<div data-role="collapsible" data-inset="false" data-iconpos="right" data-collapsible="true" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d"><h3>'+
    row["name"]+'<span class="ui-li-count ui-btn-up-c ui-btn-corner-all" data-iconpos="right">10</span></h3></div>';

    $(list).appendTo(div).parent().appendTo('[data-role="content"]').end().trigger("create");
    $('div[data-role="collapsible"]').collapsible({theme:'c',refresh:true});
    $('[data-role="listview"]').listview().listview('refresh'); 

进入函数listdata。当前列表为空,因为当您尝试附加列表对象时,函数仍在运行。

【讨论】:

  • 我试图打印 count = results.rows.length; 的值我得到 0 作为计数值,所以我认为控制没有进入 $.each 的 listdata 循环。
  • 这就是你看不到列表视图的原因,如果它是空的,它就不会显示出来。
  • 是的.. 但是为什么它没有获取查询结果?我打电话查询正确知道吗?
  • 这取决于你自己去发现,一切看起来都很好。首先检查您的查询。
  • gajotres 因为引号计数的值为零。我修好了它。但仍然没有显示数据。控制器在循环中运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
相关资源
最近更新 更多