0

近くの薬局を検索する Web アプリケーションを作成しました。これらの場所は、データ コレクション内の Apigee に保存されます。

(静的)Googleマップの更新は問題ありませんが、取得したデータを適切なonsen uiリスト(ons-list)に入れるのは残念です.

使用したコードのスニペット:

<ons-list class="list" id="list" data-role="listview">
</ons-list>

$('#list').bind('pageinit', function() {
   $('#list').listview('refresh');
});

$('<ons-list-item class="list__item--tappable list__item__line-height
    modifier="chevron">'+label+' - '+store.get('name')+'</ons-list-item>').appendTo("#list");

現在、私の結果セットは 1 行にまとめられています。apigee からデータをフェッチした後のソース:

<ons-list class="list ons-list-inner" id="list" data-role="listview">
    <ons-list-item class="list__item--tappable list__item__line-height" modifier="chevron">Pharmacy 1</ons-list-item>
    <ons-list-item class="list__item--tappable list__item__line-height" modifier="chevron">Pharmacy 2</ons-list-item>
</ons-list>

最後に述べた結果は、静的にすると問題ないように見えます。

では、何が問題なのですか?

よろしくお願いします。

4

1 に答える 1

0

あなたの質問を理解しているかどうかはよくわかりませんが、(あなたのコードをすべて見ることができないため)単純な競合状態に陥っているように見えます. つまり、「pageinit」でリストを更新していますが、その時点では BaaS からデータが返されていません。リスト項目を追加するループが完了した後、.listview('refresh') を呼び出す必要があります。例えば:

YourCollectionName.fetch(function (err, data) {
    if (err) { //do something } else {
        while (YourCollectionName.hasNextEntity()) {
            var store = YourCollectionName.getNextEntity();
            $('<ons-list-item class="list__item--tappable list__item__line-height
    modifier="chevron">'+label+' - '+store.get('name')+'</ons-list-item>').appendTo("#list");
}
$('#list').listview('refresh');
});

コレクション内に項目がある限り、リストに追加する反復が行われ、その後、更新が行われることに注意してください。

于 2014-08-07T15:41:01.337 に答える