Angularjs 角度UI网格:如何在单击按钮时清除所有(常规角度和内置UI网格)列过滤器

Angularjs 角度UI网格:如何在单击按钮时清除所有(常规角度和内置UI网格)列过滤器,angularjs,filtering,angular-ui-grid,Angularjs,Filtering,Angular Ui Grid,如何在单击按钮时清除和刷新所有(常规角度和内置UI网格)过滤器? 背景:我构建了一个应用程序,它使用UI网格并利用。它还有一个用angular编写的跨列搜索 当前战斗我希望只需单击一个按钮就可以清除并刷新我的过滤器。到目前为止,我已经能够在跨列搜索中实现这一点,但是没有成功地在内置列过滤器中实现它(具有讽刺意味的是,我认为这将是最简单的部分!) 问题研究: 1) 在UI网格教程中搜索。。。失败 2) 看着提供的…部分成功!似乎我认为我在“clearAllFilters”函数()中找到了我想要的东

如何在单击按钮时清除和刷新所有(常规角度和内置UI网格)过滤器?

背景:我构建了一个应用程序,它使用UI网格并利用。它还有一个用angular编写的跨列搜索

当前战斗我希望只需单击一个按钮就可以清除并刷新我的过滤器。到目前为止,我已经能够在跨列搜索中实现这一点,但是没有成功地在内置列过滤器中实现它(具有讽刺意味的是,我认为这将是最简单的部分!)

问题研究:

1) 在UI网格教程中搜索。。。失败

2) 看着提供的…部分成功!似乎我认为我在“clearAllFilters”函数()中找到了我想要的东西,但我不知道如何在步骤3中实现它

3) 谷歌疯狂地搜索实现演示/示例/帮助/提示/任何东西。。。失败

4) 请求有关堆栈溢出的帮助:)

提前感谢。

您可以这样做:

  $scope.clearFilters = function() {
            $scope.myGridApi.grid.clearAllFilters();
        };
//获取网格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='';
                    }
                }
            };
$scope.clearFilters=function(){
var columns=$scope.myGridApi.grid.columns;
对于(var i=0;i
对不起,我没有看到ui网格的clearAllFilters()函数。所以它变得简单了。您可以这样做:

  $scope.clearFilters = function() {
            $scope.myGridApi.grid.clearAllFilters();
        };
请试试这个:

$scope.gridApi.core.clearAllFilters();
$scope.gridApi来自我的ui网格元素的初始设置

 $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: [{

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

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

您是否有可能将控制器中网格绑定的变量重置为其默认值?@Matt-是,我想做的是重置列筛选器绑定到的变量-您的建议与我重置角度跨列搜索的方式一致,这非常适合,但ui网格筛选器是在ui网格js代码中设置和维护的,这就是我访问/重置时遇到的问题。您如何捕获事件?但是这将不会清除在自定义筛选器上选择的值。无论如何,这将获得此线程上此问题的最佳答案的向上投票。正在添加列[i]。筛选器[0]。listTerm='';也解决了我清除所选筛选器的问题。感谢您发布此@laurenOlga。我和新开发人员一样,也在努力工作,使用的是一个服务、组件和模板都非常繁重、内容丰富的应用程序,所以这有点让人望而生畏。虽然我还没有取得重大进展,但我只想花点时间感谢你提出了一个经过深思熟虑且可读性强的问题@ArepalliPraveenkumar:通过hic尝试以下解决方案。它是有效的:)@techprat这是一段时间以前的事了,我再也不能访问代码了(以前的工作),所以虽然这确实有效,但我记不起最后修改的细节了。在api文档中,我看到函数clearAllFilters最多包含三个参数,如果您查看,您可以看到,根据您想要的行为,您可能必须设置这些参数以获得预期的结果。因此,简短的回答是肯定的-但您可能必须使用参数才能获得所需的功能。