AngularJS - placeholder for empty result from filter

前端 未结 3 987
清歌不尽
清歌不尽 2020-11-29 16:35

I want to have a place holder, e.g. when filter result returns empty. Could anyone please help? I don\'t even know where to start...

<

相关标签:
3条回答
  • 2020-11-29 16:59

    Taken from this official document that's how they do it:

    ng-repeat="friend in friends | filter:q as results"
    

    Then use the results as an array

    <li class="animate-repeat" ng-if="results.length == 0">
      <strong>No results found...</strong>
    </li>
    

    Full snippet:

    <div ng-controller="repeatController">
    I have {{friends.length}} friends. They are:
    <input type="search" ng-model="q" placeholder="filter friends..." aria-label="filter friends" />
    
    
    <ul class="example-animate-container">
        <li class="animate-repeat" ng-repeat="friend in friends | filter:q as results">
          [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
        </li>
        <li class="animate-repeat" ng-if="results.length == 0">
          <strong>No results found...</strong>
        </li>
      </ul>
    </div>
    
    0 讨论(0)
  • 2020-11-29 17:02

    A tweak on the approach that only requires you to specify the filter once:

      <li ng-repeat="bar in filteredBars = (bars | filter:barFilter)">{{bar.name}}</li>
    </ul>
    <p ng-hide="filteredBars.length">Nothing here!</p>
    

    Fiddle

    0 讨论(0)
  • 2020-11-29 17:16

    Here is the trick using ng-show

    HTML:

    <div ng-controller="Ctrl">
    <h1>My Foo</h1>
    <ul>
        <li ng-repeat="foo in foos">
            <a href="#" ng-click="setBarFilter(foo.name)">{{foo.name}}</a>
        </li>
    </ul>
    <br />
    <h1>My Bar</h1>
    <ul>
        <li ng-repeat="bar in bars | filter:barFilter">{{bar.name}}</li>
    </ul>
    <p ng-show="(bars | filter:barFilter).length == 0">Nothing here!</p>
    
    </div>
    

    jsFiddle: http://jsfiddle.net/adrn/PEumV/2/

    0 讨论(0)
提交回复
热议问题