我才刚刚开始探索 AngularJS。我最近看了一个教程,解释如何设置基本过滤器。我现在正试图扩展这个概念。我觉得我接近这个的方式非常低效。
此处使用的方法要求为每个新数据集设置一个新的 Ctrl。如果您有 5 个不同的数据集要为其设置过滤器,则需要 5 个不同的控制器。当我查看下面的示例时,我看到很多重复的代码,这让我觉得可以以不同的方式完成。
这是一个有效的jsfiddle:http: //jsfiddle.net/smithd/eUZ7q/1/
<div ng-app="searchApp">
<div ng-controller="FilterCtrl" class="filter">
<h1>Search Demo</h1>
<hr/>
<div ng-switch on="selection">
<!-- <div ng-switch-default>default</div> -->
<div ng-switch-when="avengers">
<div ng-controller="AvengersCtrl">
<input type="text" ng-model="search">
<table ng-show="(filteredData = (avengers.cast | filter:search)) && search && search.length >= 1">
<tr ng-repeat="actor in avengers.cast | filter:search">
<td>{{actor.name}}</td>
<td>{{actor.character}}</td>
</tr>
</table>
</div>
</div>
<div ng-switch-when="expendables">
<div ng-controller="ExpendablesCtrl">
<input type="text" ng-model="search">
<table ng-show="(filteredData = (expendables.cast | filter:search)) && search && search.length >= 1">
<tr ng-repeat="actor in expendables.cast | filter:search">
<td>{{actor.name}}</td>
<td>{{actor.character}}</td>
</tr>
</table>
</div>
</div>
<select ng-model="selection" ng-options="item for item in items" class="filter"></select>
</div>
</div>
</div>