2016-05-31 2 views
0

sqliteデータを取得するには問題がありますCordova-sqlite-storage PluginとCordovaアプリのメニューに入れてください。Cordovaでjavascript push()が動作しません

は、私のコードの一部を参照してください。

var db = window.sqlitePlugin.openDatabase({name: "test.db", location: 'default'}); 

var items = []; 

db.transaction(function(transaction) { 
transaction.executeSql('SELECT * FROM categories', [], function (tx, results) { 

    for (i = 0; i < results.rows.length; i++){ 
     items.push('<li data-page="categories" data-value="'+results.rows.item(i).cat_id+'"><a href="#"><i class="fa fa-'+results.rows.item(i).cat_icon+'"></i><em>'+results.rows.item(i).cat_title+'</em></a></li>'); 
     alert('<li data-page="categories" data-value="'+results.rows.item(i).cat_id+'"><a href="#"><i class="fa fa-'+results.rows.item(i).cat_icon+'"></i><em>'+results.rows.item(i).cat_title+'</em></a></li>'); 
    } 
}, null); 
}); 

items.push('<li data-page="categories" data-value="aaa"><a href="#"><i class="fa fa-check"></i><em>Teste</em></a></li>'); 
jQuery('.menu').append(items); 

問題がitems.push(ということである)のために()が動作しませんで。どうして?

for()のalert()は、データを正しく表示します。

2番目のitems.push()は正しく動作します。

+1

可能な重複:あなただけのforループの後に、結果が利用可能なコールバック内のDOMの変更を扱うコードの行を移動する必要がそれを解決するために

非同期呼び出し?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –

+0

「メニュー」に「項目」を追加する必要があります。 "結果"が利用可能なときにトランザクションコールバック内のforループの直後。 –

+0

タンク@JoseHermosillaRodrigo for()内のappend()はうまくいった! –

答えて

0

コードの非同期動作がありません。 データベースへのトランザクションが完了するまでに時間がかかるので、この終了を成功またはエラーで聞くためのコールバックが提供されます。あなたのコードで

items.push('<li data-page="categories" data-value="aaa"><a href="#"><i class="fa fa-check"></i><em>Teste</em></a></li>'); 
jQuery('.menu').append(items); 

これはあなたのコールバックはよりも前に呼び出されます。 [どのように私はからの応答を返さないの

var db = window.sqlitePlugin.openDatabase({name: "test.db", location: 'default'}); 

var items = []; 

db.transaction(function(transaction) { 
transaction.executeSql('SELECT * FROM categories', [], function (tx, results) { 

    for (i = 0; i < results.rows.length; i++){ 
     items.push('<li data-page="categories" data-value="'+results.rows.item(i).cat_id+'"><a href="#"><i class="fa fa-'+results.rows.item(i).cat_icon+'"></i><em>'+results.rows.item(i).cat_title+'</em></a></li>'); 
     alert('<li data-page="categories" data-value="'+results.rows.item(i).cat_id+'"><a href="#"><i class="fa fa-'+results.rows.item(i).cat_icon+'"></i><em>'+results.rows.item(i).cat_title+'</em></a></li>'); 
    } 
    jQuery('.menu').append(items); 
}, null); 
}); 
関連する問題