在嵌套的json中过滤数据

时间:2015-02-02 06:43:23

标签: javascript json angularjs

我的角度控制器如下 -     如何过滤嵌套数据,如第一行json -

<script>
  var myApp = angular.module('myApp', ['angular.filter']);
  function VersionFilterCtrl($scope) {  
    $scope.limit=6;
    $scope.orders = [
      { id:1, customer:[{ name: 'John1', id: 10 },{ name: 'John2', id: 100 }] },
      { id:2, customer: { name: 'William', id: 20 } },
      { id:3, customer: { name: 'John', id: 10 } },
      { id:4, customer: { name: 'William', id: 20 } },
      { id:5, customer: { name: 'Clive', id: 30 } }
    ];
  }
</script>

和我的HTML

<div ng-app="myApp">
  <div ng-controller="VersionFilterCtrl">
    <input type='text' name='name' ng-model='search.customer.name'>
    <input type='text' name='name' ng-model='search.customer.id'>
    <li ng-repeat="order in orders| filterBy: ['customer.name']: search.customer.name| filterBy: ['customer.id']: search.customer.id">
      {{order.id}}{{order.customer.name}}
    </li>
  </div>
</div>

JSFIDDLE EXAMPLE

1 个答案:

答案 0 :(得分:0)

您在设置搜索模型的方式上正确接近了这一点,以匹配您要过滤的数据的结构,即search.customer.namesearch.customer.id

您需要做的就是将search对象应用为过滤器:

<li ng-repeat="order in orders | filter: search">
   {{order.id}} | id: {{order.customer.id}}  name: {{order.customer.name}}
</li>

plunker

其他一些问题:

  • 没有filterBy(除非您自己创建)
  • 您的第一个订单记录有一系列客户 - 这是故意的吗?这个plunker处理那个案例