378

これは非常に一般的なことだと思いましたが、AngularJS で処理する方法が見つかりませんでした。イベントのリストがあり、それらをAngularJSで出力したいとしましょう。それはとても簡単です:

<ul>
    <li ng-repeat="event in events">{{event.title}}</li>
</ul>

しかし、リストが空の場合、どのように処理すればよいでしょうか? リストに「イベントはありません」などのメッセージボックスを配置したいと思います。近くに来る唯一のものはng-switchwithevents.lengthです(配列ではなくオブジェクトの場合に空かどうかを確認するにはどうすればよいですか?)が、それが本当に私が持っている唯一のオプションですか?

4

10 に答える 10

570

ngShowを使用できます。

<li ng-show="!events.length">No events</li>

を参照してください。

または、ngHideを使用できます

<li ng-hide="events.length">No events</li>

を参照してください。

オブジェクトの場合、Object.keysをテストできます。

于 2012-09-09T17:19:56.230 に答える
371

これをフィルタリングされたリストで使用したい場合は、次のような巧妙なトリックがあります。

<ul>
    <li ng-repeat="item in filteredItems  = (items | filter:keyword)">
        ...
    </li>
</ul>
<div ng-hide="filteredItems.length">No items found</div>
于 2013-09-03T13:00:36.043 に答える
29

angularjs の新しいバージョンでは、この質問に対する正しい答えは次を使用することng-ifです。

<ul>
  <li ng-if="list.length === 0">( No items in this list yet! )</li>
  <li ng-repeat="item in list">{{ item }}</li>
</ul>

このソリューションは、リストがダウンロードされようとしているときにちらつきません。これは、メッセージを表示するためにリストを定義し、長さを 0 にする必要があるためです。

使用中のプランカーを次に示します: http://plnkr.co/edit/in7ha1wTlpuVgamiOblS?p=preview

ヒント: ローディング テキストまたはスピナーを表示することもできます。

  <li ng-if="!list">( Loading... )</li>
于 2015-01-02T07:49:42.887 に答える
29

リストが空のときに DOM から削除するだけの場合は、 angular-ui ディレクティブ を確認することをお勧めします。ui-iful

<ul ui-if="!!events.length">
    <li ng-repeat="event in events">{{event.title}}</li>
</ul>
于 2012-12-01T21:40:23.290 に答える
23
<ul>
    <li ng-repeat="item in items | filter:keyword as filteredItems">
        ...
    </li>
    <li ng-if="filteredItems.length===0">
        No items found
    </li>
</ul>

これは @Konrad 'ktoso' Malawski に似ていますが、覚えやすいです。

Angular 1.4 でテスト済み

于 2015-10-06T01:14:56.497 に答える
2

この ng-switch を使用できます。

<div ng-app ng-controller="friendsCtrl">
  <label>Search: </label><input ng-model="searchText" type="text">
  <div ng-init="filtered = (friends | filter:searchText)">
  <h3>'Found '{{(friends | filter:searchText).length}} friends</h3>
  <div ng-switch="(friends | filter:searchText).length">
    <span class="ng-empty" ng-switch-when="0">No friends</span>
    <table ng-switch-default>
      <thead>  
        <tr>
          <th>Name</th>
          <th>Phone</th>
        </tr>
      </thead>
      <tbody>
      <tr ng-repeat="friend in friends | filter:searchText">
        <td>{{friend.name}}</td>
        <td>{{friend.phone}}</td>
      </tr>
    </tbody>
  </table>
</div>
于 2015-10-09T13:35:20.513 に答える
0

私は通常ng-showを使用します

<li ng-show="variable.length"></li>

たとえば、変数を定義する場所

<div class="list-group-item" ng-repeat="product in store.products">
   <li ng-show="product.length">show something</li>
</div>
于 2016-03-20T03:33:22.927 に答える