带有数组数据的ngTable过滤器列

时间:2017-02-28 09:36:41

标签: angularjs arrays filter ngtable

我尝试在ngTable的官方网页上找到第一个帮助,但没有结果。

我想用我的对象数组填充数据表(参见下面的示例) 通过文本或数字进行排序和过滤非常简单(在列#34;名称"和#34;备注") 但是我想要显示一列数据"用户"这是一组用户对象。我的表通过将所有用户添加到一列来显示数据。 但是现在我无法对数组的这些数据列进行排序或过滤。

也许我必须通过filter-options添加自定义过滤器,但我现在已经知道如何使这成为可能。

如果我可以预设"用户"的过滤器也会很棒。在我的控制器的ngTableParams中 - 例如"过滤器:{'用户':' A'}" (仅显示一个或多个名字=" A"的用户在用户列表中的项目。

希望有人可以帮助我。 Thx,Jorgen

DATA:

this.data = [{
  name: 'Test A',
  remark: 'test A',
  users: [
    {_id: 1234, firstname: 'A', lastname: 'B'},
    {_id: 2345, firstname: 'B', lastname: 'C'},
    {_id: 3456, firstname: 'C', lastname: 'D'},
    {_id: 4567, firstname: 'D', lastname: 'E'},
  ]
},
{
  name: 'Test B',
  remark: 'test B',
  users: [
    {_id: 1234, firstname: 'A', lastname: 'B'},
    {_id: 5678, firstname: 'E', lastname: 'F'},
    {_id: 3456, firstname: 'C', lastname: 'D'},
  ]
},
{
  name: 'Test C',
  remark: 'test C',
  users: [
    {_id: 5678, firstname: 'E', lastname: 'F'}
  ]
}];

HTML:

<div class="table-responsive">
  <table ng-table="myCtrl.tableParams" class="table table-condensed table-bordered table-striped table-vmiddle" show-filter="true">
    <tr ng-repeat="item in $data">
      <td data-title="'Name'" sortable="'name'" filter="{'name': 'text'}">{{item.name}}</td>
      <td data-title="'Users'">
        <span class="m-r-10" ng-repeat="user in item.users">{{user.firstname}} {{user.lastname}}</span>
      </td>
      <td data-title="'Remark'" sortable="'remark'" filter="{'remark': 'text'}">{{item.remark}}</td>
    </tr>
  </table>
</div>

控制器:

this.tableParams = new ngTableParams({
  sorting: {name: 'asc'}
},
{
  data: this.data
});

https://embed.plnkr.co/7sGrv7IpUzCXDN1USeyX/

1 个答案:

答案 0 :(得分:0)

如果你想在控制器中这样做:

angular.forEach(this.data, function (obj, idx) {
    obj.filterOnUsers = [];
    obj.filterOnUsers = $filter('filter')(obj.users, { firstname: obj.name });
});

检查此Angular Filter Doc