我想根据下拉列表中选择的条件过滤表格。在newList函数中写入val不会过滤表。任何建议如何解决这个问题。


的HTML







<tbody>

  <tr ng-repeat="friendObj in newfriends">

    <td>{{friendObj.name}}</td>

    <td>{{friendObj.phone}}</td>

    <td>{{friendObj.age}}</td>
  </tr>

</tbody>





JS

 $scope.newList = function (val) {
      alert(val);
$scope.newfriends = $filter('filter')($scope.friends, {
    val: $scope.searcha
})

最佳答案

根据您的代码,您尝试多次添加条件,然后使用这些条件进行过滤。

在您的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>


这是更新的插件。
http://plnkr.co/edit/r5OcI366dyvLQ24fFIje?p=preview

关于javascript - 在angularjs中动态设置过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33514431/

10-16 21:06