在angularjs中动态设置过滤器

时间:2015-11-04 05:36:37

标签: javascript html angularjs angularjs-filter plunker

我想根据下拉列表中选择的条件过滤表格。在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>
      

2 个答案:

答案 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')

检查update plunker