javascript - Angular UI-Grid 自定义过滤器按钮

标签 javascript angularjs angular-ui-grid

我有一些使用 Angular UI-Grid 的数据,我想使用单个过滤器按钮过滤单个列值。

过滤器输入可用,但过滤器按钮尚不可用。是否可以实用地拥有一个过滤器按钮?

Plunker:http://plnkr.co/edit/R6PhMiBbaeqj9ErjdvY1?p=preview

HTML:

<div ng-controller="MainCtrl">

  <p><button ng-click='filterBtn()'>Filter for "Company = Mixers"</button></p>

  <p><input ng-model='filterValue'/><button ng-click='filter()'>Filter</button></p>

  <div id="grid1" ui-grid="gridOptions" class="grid"></div>

</div>

JS:

var app = angular.module('app', ['ngTouch', 'ui.grid']);

app.controller('MainCtrl', ['$scope', '$http', function ($scope, $http) {
  var today = new Date();
  $scope.gridOptions = {
    enableFiltering: false,
    onRegisterApi: function(gridApi){
      $scope.gridApi = gridApi;
      $scope.gridApi.grid.registerRowsProcessor( $scope.singleFilter, 200 );
    },
    columnDefs: [
      { field: 'name' },
      { field: 'company' }
    ]
  };

  $http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
    .success(function(data) {
      $scope.gridOptions.data = data;
  });

  $scope.filterText = 'Mixers';

  $scope.filterBtn = function() {
    $scope.gridApi.grid.columns[1].filters[0] = {
      condition: uiGridConstants.filter.EXACT,
      term: 'Mixers'
    };

    $scope.gridOptions.enableFiltering = true
    $scope.gridApi.grid.refresh(); 
  }

  $scope.filter = function() {
    $scope.gridApi.grid.refresh();
  };

  $scope.singleFilter = function( renderableRows ){
    var matcher = new RegExp($scope.filterValue);
    renderableRows.forEach( function( row ) {
      var match = false;
      [ 'name', 'company' ].forEach(function( field ){
        if ( row.entity[field].match(matcher) ){
          match = true;
        }
      });
      if ( !match ){
        row.visible = false;
      }
    });
    return renderableRows;
  };
}]);

最佳答案

好的,我让它可以同时使用两个按钮:

http://plnkr.co/edit/25r5aBC0wAtDTEE8gOcO?p=preview

$scope.filterText = '';

  $scope.filterBtn = function() {
    $scope.filterText = 'Mixers';
    $scope.gridApi.grid.refresh(); 
  }

  $scope.filter = function() {
    $scope.filterText = $scope.filterValue;
    $scope.gridApi.grid.refresh();
  };

关于javascript - Angular UI-Grid 自定义过滤器按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37305655/

相关文章:

angularjs - 使用AngularJS ui-grid $ scope.saveRow保存行数据

javascript - 主干中的动态加载模板和对象之间的通信

javascript - 使用 ReduxReducer 来合并数组

javascript - 我正在尝试将函数传递给我创建的指令,但它在 angularjs 中不起作用

javascript - Highcharts 的格式类别(x 轴)

javascript - 如何在重新加载另一个数据集 ui-grid 之前删除 ui-grid 上的排序

angularjs - ng-click 内部单元格模板不会触发 Controller 中的功能

javascript - 元素值 2 的 jQuery Owl 轮播动画

javascript 中文/日文字符解码

javascript - Angularjs 从 1 个选择框中按过去 12 个月过滤