我想根据下拉列表中选择的条件过滤表格。在newList函数中编写val不会过滤表。任何建议如何通过这个。
HTML
false
JS
<tbody>
<tr ng-repeat="friendObj in newfriends">
<td>{{friendObj.name}}</td>
<td>{{friendObj.phone}}</td>
<td>{{friendObj.age}}</td>
</tr>
</tbody>
答案 0 :(得分:1)
根据您的代码,您尝试多次添加条件,然后您想要使用这些条件进行过滤。
这里的JSON只有3个属性。 {姓名,电话和年龄}。
所以你的标准不应该超过3行,它不应该有两次相同的东西。 如果你这样做,你需要建立自己的过滤器。 使用以下代码
$scope.newList = function() {
var searchBy = {};
angular.forEach($scope.newCriteria, function(criteria, key) {
searchBy[criteria.name] = criteria.value;
});
$scope.newfriends = $filter('filter')($scope.friends, searchBy);
}
HTMl如下
<div id="searchy">
<ul class="list-unstyled">
<li style="display: inline-block" ng-repeat="crtia in newCriteria">
<table>
<tr>
<td>
<select ng-model="crtia.name" ng-options="searchopt for searchopt in searchcriteria " ng-click="searchy.check()"></select>
</td>
<td>
<input ng-model="crtia.value" placeholder="{{crtia.name}}" ng-change="newList()" />
</td>
</tr>
</table>
</li>
</ul> <button ng-click="searchy.generate()">Add Criteria</button> </div>
这是更新的plunker。 http://plnkr.co/edit/r5OcI366dyvLQ24fFIje?p=preview
答案 1 :(得分:0)
您可能希望根据下拉列表选择进行过滤,然后创建适当的搜索模型,如
<select ng-model="selectedsearchcriteria"
ng-options="searchopt for searchopt in searchcriteria "></select>
<!--When you select dropdown 'selectedsearchcriteria' update like 'name', 'age' and so on
then ng-model="search[selectedsearchcriteria]" forms like search.name, search.age and so on-->
<input name="search" ng-model="search[selectedsearchcriteria]" placeholder="{{selectedsearchcriteria}}" />
<!--Here 'filter:search:strict' filter like search.name it is like property based filter-->
<tr ng-repeat="friendObj in newfriends |filter:search:strict">
此外,我认为您不需要在控制器中使用$filter('filter')