2017-03-08 42 views
2

我已经在用户界面中创建了一个自定义过滤器 - 网格为一列。 我想只过滤与应用的过滤器完全匹配其值,而不是包含在用户界面网格中的自定义过滤器以过滤完全匹配

下面是我的自定义过滤器:

myapp2.controller('activityFilterCtrl', function($scope, $compile, $timeout) { 
var $elm; 
$scope.showAgeModal = function() { 
    $scope.listOfAges = ['TRL1','TRL2','TRL3','TRL4','TRL5','TRL6','Launch Gate','Alpha Gate','Beta Gate','H-O','Intermediate H-O','Internal Review','DEL','Evaluation','MIL']; 




    $scope.gridOptions = { 
      data: [], 
      enableColumnMenus: false, 
      onRegisterApi: function(gridApi) { 
       $scope.gridApi = gridApi; 

       if ($scope.colFilter && $scope.colFilter.listTerm){ 
        $timeout(function() { 
         $scope.colFilter.listTerm.forEach(function(activityType) { 
          var entities = $scope.gridOptions.data.filter(function(row) { 
           return row.activityType === activityType; 
          }); 

          if(entities.length > 0) { 
           $scope.gridApi.selection.selectRow(entities[0]); 
          } 
         }); 
        }); 
       } 
      } 
    }; 

    $scope.listOfAges.forEach(function(activityType) { 
     $scope.gridOptions.data.push({activityType: activityType}); 
    }); 

    var html = '<div class="modal" ng-style="{display: \'block\'}"><div class="modal-dialog"><div class="modal-content"><div class="modal-header">Filter Ages</div><div class="modal-body"><div id="grid1" ui-grid="gridOptions" ui-grid-selection class="modalGrid"></div></div><div class="modal-footer"><button id="buttonClose" class="btn btn-primary" ng-click="close()">Filter</button></div></div></div></div>'; 
    $elm = angular.element(html); 
    angular.element(document.body).prepend($elm); 

    $compile($elm)($scope); 

}; 

$scope.close = function() { 
    var ages = $scope.gridApi.selection.getSelectedRows(); 
    $scope.colFilter.listTerm; 
    $scope.colFilter.listTerm=[]; 
    ages.forEach(function(activityType) { 
     $scope.colFilter.listTerm.push(activityType.activityType); 
    }); 

    $scope.colFilter.term = $scope.colFilter.listTerm.join(', '); 
    $scope.colFilter.condition = new RegExp($scope.colFilter.listTerm.join('|')); 

    if ($elm) { 
     $elm.remove(); 
    } 
}; 

}) }

,这是我的专栏def为该列:

{ 

            name: "Activity Type", 
            field: 'activityType', 
            visible: false, 
            headerTooltip:'Activity Type', 
            enableHiding: false,cellClass: 'scheduleData', 
            minWidth:150,enableFiltering: true, 
            filterHeaderTemplate: '<div class="ui-grid-filter-container" ng-repeat="colFilter in col.filters"><div activity-filter-model></div></div>', 
            filter: { 
              condition: function(searchTerm, activityType) { 
               return activityType.indexOf(searchTerm) > -1 
              } 

               }, 
           }, 

请指导我,如果我必须在控制器中使用正则表达式,而应用col.Filter条件或列def中的过滤条件是否有效。

回答

1

解决:

通过在自定义过滤器控制器设置开始值

$ scope.colFilter.condition = 2;

+0

不要忘记标记你的答案为“接受”。谢谢,请。 –