ngHide or ngShow based on number of children

AngularJS made a breaking change in version 1.3.0!

Unfortunately, rajkamals answer is no longer correct.

From this version on, only these 6 values are considered falsy:

  1. false
  2. null
  3. undefined
  4. NaN
  5. 0
  6. ""

The values 'f', '0', 'false', 'no', 'n' and [] (!) became truthy.

So using

<div ng-show="items">
    <!-- ... --->
</div>

can no longer be recommended if the div should only be visible if items contains at least 1 element, because even with items = [] it will be displayed.

Instead, you could use

<div ng-show="items.length > 0">
    <!-- ... --->
</div>

To add to @Josh David Miller answer, the following values are considered falsy in angular.

1)An Empty Array

2)An Empty String //Even a space is considered true

3)An Boolean with false

4)undefined

5)null

6) 0

So, David's answer can be written as,

<div ng-show="items.length">
  <div ng-repeat="item in items">
    <!-- ... -->
  </div>
</div>

or even shorter,

<div ng-show="items">
  <div ng-repeat="item in items">
    <!-- ... -->
  </div>
</div>

Tags:

Angularjs