1

リストビューとしてクエリ結果を追加しようとしている折りたたみ可能なセットがあります。しかし、結果をリストビューとしてバインドできません。

これは私がやろうとしていることです

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);

});

} 
4

1 に答える 1

1

関数リストデータにエラーがあります。

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に。リストオブジェクトを追加しようとすると関数がまだ実行されているため、現在リストは空です。

于 2013-05-13T08:39:44.757 に答える