0

我制作了一个搜索附近药店的网络应用程序。这些位置存储在 Apigee 的数据集合中。

(静态)谷歌地图的更新没有问题,但不幸的是,将检索到的数据放入适当的温泉 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");

目前我的结果集放在一行中。从 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 回答