Angular UI-Grid:如何清除所有(一般Angular和内置UI-Grid)按钮上的列过滤器单击

时间:2015-09-16 18:37:31

标签: angularjs filtering angular-ui-grid

如何清除刷新按钮点击后的所有(一般Angular和内置UI-Grid)过滤器?

后台:我构建了一个使用UI-Grid的应用程序,并利用了built-in filtering functionality。它还有一个以角度写的跨列搜索。

当前战斗我希望能够通过单击按钮清除和刷新我的过滤器。到目前为止,我已经能够为跨列搜索实现此功能,但已成功实现内置列过滤器(具有讽刺意味的是,我认为是简单的部分!)。

研究完成问题:

1)通过UI-Grid教程搜索...失败

2)看着提供的UI-Grid API ...部分成功!好像我认为我在“clearAllFilters”函数(here is the source code)中找到了我正在寻找的东西,但我无法弄清楚如何实现它,所以步骤3 ......

3)谷歌搜索疯狂的实现演示/示例/帮助/提示/任何东西!? ...失败

4)在Stack Overflow上寻求帮助:)

提前致谢。

4 个答案:

答案 0 :(得分:17)

抱歉,我没有看到ui grid的clearAllFilters()函数。所以它变得更简单。你可以这样做:

  $scope.clearFilters = function() {
            $scope.myGridApi.grid.clearAllFilters();
        };

答案 1 :(得分:5)

你可以这样做:

//获取网格api

$scope.myGridOptions.onRegisterApi = function(gridApi) {
  $scope.myGridApi=gridApi;
}

您必须将此功能绑定到清除按钮:

        $scope.clearFilters = function() {
            var columns = $scope.myGridApi.grid.columns;
                for (var i = 0; i < columns.length; i++) {
                    if (columns[i].enableFiltering) {
                        columns[i].filters[0].term='';
                    }
                }
            };

答案 2 :(得分:3)

请试试这个:

$scope.gridApi.core.clearAllFilters();

$ scope.gridApi来自我的ui-grid元素的初始设置

 $scope.gridOptions = {
        flatEntityAccess: true,
        paginationPageSizes: [10, 25, 50, 75, 100],
        paginationPageSize: 25,
        enableFiltering: true,
        enableColumnResizing: true,
        enableGridMenu: true,
        onRegisterApi: function (gridApi) {
            $scope.gridApi = gridApi;
        },
        columnDefs: [{

答案 3 :(得分:0)

我认为这是一种简单的方法(只需用原始/实际的json数据替换网格数据),只需单击按钮即可创建并调用clearFilters函数。

$scope.clearFilters = function() {
        $scope.yourGridOptions.data = $scope.originalData;
    }