【问题标题】:Show a "loading..." div element until list has loaded and then hide the div element显示“正在加载...” div 元素,直到列表已加载,然后隐藏 div 元素
【发布时间】:2015-10-07 09:41:22
【问题描述】:

我在移动应用中有一个 angularJs/firebase 列表,加载需要几秒钟。我想在那里放一个简单的 div,上面写着“列表正在加载...”,直到列表中的项目加载完毕。

我知道我必须使用 ng-hide/ng-show 方法,但我不知道要使用什么表达式。我的列表在一个 div 中,而我的“正在加载...”文本在另一个 div 中。我如何告诉“正在加载...” div 在填充列表后隐藏,而不是更早?

我知道这不是正确的做法,但它很简单,因为我所要做的就是隐藏一个元素并显示另一个元素。节拍使用某种形式的超时功能,有时可能会如此不可预测。至少这样,我确信在列表实际加载之前用户不会感到困惑。他们实际上会知道它的加载。

我使用的是 ionic 框架,因此使用了 ion-content 标签。

<ion-content id="content">
<div class="" ng-hide="loaded">
   "Loading...."
</div>

<ion-list show-delete="data.showDelete" 
show-reorder="data.showReorder" ng-model="loaded">

  <ion-item ng-repeat="client in clients|filter:search |orderBy:'name'"
      item="client"
      href="#/{{client.$id}}" class="item-remove-animate">
      <h2>{{client.name}}</h2>
      <h4>File #: {{client.fileNumber}}</h4>
      <ion-delete-button class="ion-minus-circled"
                          ng-click="removeClient(client)">
      </ion-delete-button>

      <ion-option-button class="button-assertive"
                          ng-click="edit(client)">
        Edit
      </ion-option-button>

      <ion-option-button class="button-calm"
                          ng-click="share(client)">
        Share
      </ion-option-button>

      <ion-reorder-button class="ion-navicon" on-reorder=
      "moveItem(client, $fromIndex, $toIndex)">
      </ion-reorder-button>
  </ion-item>
</ion-list>

【问题讨论】:

  • 你能分享你的代码吗
  • 等一下,我会修改我的问题。
  • 列表是一次性填充的吗? ng-hide="listName.length > 0",可能是这样的吗?
  • 用户ng-show 指令并根据您的要求将值更改为true/false..

标签: javascript html css angularjs


【解决方案1】:

当客户端数组有内容时隐藏加载器

<div class="" ng-hide="clients.length > 0">
   "Loading...."
</div>

当客户端数组有内容时显示列表

 <ion-list ng-show="clients.length > 0" show-delete="data.showDelete" 
    show-reorder="data.showReorder" ng-model="loaded">
...

【讨论】:

  • 啊……有道理!谢谢,我会试试的!
【解决方案2】:

我在这种情况下使用 jQuery BlockUI 插件 [http://malsup.com/jquery/block/]。

【讨论】:

    【解决方案3】:

    要隐藏您的 div,请使用属性

    <div ng-hide="..." >
    

    您需要将此与列表中的加载状态联系起来。

    这在一定程度上取决于您获取数据的方式,举个粗略的例子,您可以像这样封装您的列表:

    var mydata = {};
    mydata.values = [];
    mydata.loading = true;
    mydata.errormsg = "";
    

    然后,当您检索数据、设置加载状态和/或错误消息时,如果出现问题,您也可以以同样的方式显示错误消息,例如

    <div ng-show="mydata.loading">Loading...</div>
    <div ng-show="mydata.errormsg != ''">Oh no...</div>
    

    【讨论】:

    • 那么我应该命名我的列表吗?
    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多