AngularJS – 来自filter的空结果的占位符
我想要一个占位符,例如<No result>
当过滤结果返回空时。 任何人都可以请帮忙? 我甚至不知道从哪里开始
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> </div>
JS :
function Ctrl($scope) { $scope.foos = [{ name: 'Foo 1' },{ name: 'Foo 2' },{ name: 'Foo 3' }]; $scope.bars = [{ name: 'Bar 1', foo: 'Foo 1' },{ name: 'Bar 2', foo: 'Foo 2' }]; $scope.setBarFilter = function(foo_name) { $scope.barFilter = {}; $scope.barFilter.foo = foo_name; } }
jsFiddle : http : //jsfiddle.net/adrn/PEumV/1/
谢谢!
调整方法只需要您指定一次filter:
<li ng-repeat="bar in filteredBars = (bars | filter:barFilter)">{{bar.name}}</li> </ul> <p ng-hide="filteredBars.length">Nothing here!</p>
小提琴
这是使用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/
从这个官方文件中看到他们是这样做的:
ng-repeat="friend in friends | filter:q as results"
然后使用结果作为数组
<li class="animate-repeat" ng-if="results.length == 0"> <strong>No results found...</strong> </li>
完整摘录:
<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>