如何使用单个文本框基于任何列数据过滤行

Vis*_*swa 6 angularjs angular-ui angularjs-directive ngtable

我在用ng-table.

我试图使用示例中给出的过滤器,但是为了过滤每个列,我需要有单独的文本框.

但我想要实现的是,一个文本框可以根据任何列数据搜索任何行.

我怎样才能实现这一目标?

就像jquery datatable搜索框一样.

Vis*_*swa 10

这就是我的表现

HTML

    <input type="text" ng-model="searchUser">

    <table ng-table="tableParams">
      <tr ng-repeat="user in $data">
        ...
      </tr>
    </table>
Run Code Online (Sandbox Code Playgroud)

脚本

        var usersData = []; // initial data

        $scope.tableParams = new ngTableParams({
            page: 1,           
            count: 7
        }, {
        counts : [7,14,21,28],          
        getData: function($defer, params) {
            var searchedData = searchData();
            params.total(searchedData.length);
            $scope.users = searchedData.slice((params.page() - 1) * params.count(), params.page() * params.count());
            $defer.resolve($scope.users);                           
        },
        $scope: { $data: {} }
    });


$scope.$watch("searchUser", function () {
    $scope.tableParams.reload();
});

var searchData = function(){
    if($scope.searchUser)
       return $filter('filter')(usersData,$scope.searchUser);
    return usersData;
}
Run Code Online (Sandbox Code Playgroud)

剩余的默认ngtable配置.

  • 你可以考虑通过在这个`this.last!== undefined`中包装重载来防止第一次加载表的重载,一个完整的例子:`$ scope.$ watch("searchUser",function(){if(this.last) !== undefined){$ scope.tableParams.reload();}});` (2认同)