angular ui 网格中的所有自定义过滤器都有一个控制器

having a single controller for all the custom filter in angular ui grid

我在 ui 网格(angular ui-网格)中对 5 列使用自定义过滤器,link 如下所示:

http://ui-grid.info/docs/#/tutorial/306_custom_filters

要创建自定义过滤器,需要创建一个自定义模式并分配给它一个控制器。

此控制器用于创建过滤器值,filter.term 稍后用于主网格过滤器。

我需要知道我们是否可以对我的 ui-grid 中的所有 5 列使用单一模态控制器。

如果有人用过,请分享。

解决了在从每列的自定义过滤器模板调用的方法中传递列名称的问题。然后根据列的类型创建过滤器选项网格。

myapp2.controller('BenefitsFilterCtrl', function( $scope, $compile, $timeout ) {
    var $elm;
    $scope.showBenefitsFilter = function(type) {
        $scope.listOfAges = [];

        if(type==='projectId'){
         $scope.col.grid.appScope.gridOptions.data.forEach( function (row) {
              if ( $scope.listOfAges.indexOf( row.projectID ) === -1 ) {
                $scope.listOfAges.push( row.projectID );
              }
            });
        }else if(type==='parameterHeading'){
             $scope.col.grid.appScope.gridOptions.data.forEach( function (row) {
                  if ( $scope.listOfAges.indexOf( row.benefit ) === -1 ) {
                    $scope.listOfAges.push( row.benefit );
                  }
                });
        }else if(type==='valueParameter'){
             $scope.col.grid.appScope.gridOptions.data.forEach( function (row) {
                  if ( $scope.listOfAges.indexOf( row.benefitSubcategory ) === -1 ) {
                    $scope.listOfAges.push( row.benefitSubcategory );
                  }
                });
        }else if(type==='benefitType'){
             $scope.col.grid.appScope.gridOptions.data.forEach( function (row) {
                  if ( $scope.listOfAges.indexOf( row.benefitType ) === -1 ) {
                    $scope.listOfAges.push( row.benefitType );
                  }
                });
        }else if(type==='MatureLevel'){
             $scope.col.grid.appScope.gridOptions.data.forEach( function (row) {
                  if ( $scope.listOfAges.indexOf( row.assessmentMaturityLevel ) === -1 ) {
                    $scope.listOfAges.push( row.assessmentMaturityLevel );
                  }
                });
        }else if(type==='portfolio'){
             $scope.col.grid.appScope.gridOptions.data.forEach( function (row) {
                  if ( $scope.listOfAges.indexOf( row.oxd ) === -1 ) {
                    $scope.listOfAges.push( row.oxd );
                  }
                });
        }else if(type==='program'){
             $scope.col.grid.appScope.gridOptions.data.forEach( function (row) {
                  if ( $scope.listOfAges.indexOf( row.program ) === -1 ) {
                    $scope.listOfAges.push( row.program );
                  }
                });
        }
        $scope.listOfAges.sort();

这里的listOfAges是选项列表,可以从modal中的网格中选择。

如果有人遇到类似的需求,准备创建一个plunker并分享。因为这个代码片段不是那么具有描述性