2017-09-13 75 views
0

OutputUI柵場返回陣列

您好, 我需要過濾掉基於位置(「SB」或「CO」)的一些公司名稱。所以我在ui-grid中使用了自定義過濾器。它只返回每個鍵的完整值並且僅當它完成映射時才返回。我附上了輸出。 Plunker代碼演示:link 使用:角 - 5.0上 UI網 - v3.0.7

application.controller('ApplicationController', ['$scope', 'uiGridConstants', 'ApplicationService', 
     function ($scope, uiGridConstants, ApplicationService) { 
      $scope.message = "Welcome"; 
      $scope.gridOptions = { 
       showGridFooter: true, 
       showColumnFooter: true, 
       enableFiltering: true 
      }; 
      $scope.gridOptions.columnDefs = [ 
       { 
        name: 'company', 
        field: 'company', 
        filterHeaderTemplate: '<div class="ui-grid-filter-container" ng-repeat="colFilter in col.filters"><div my-custom-dropdown></div></div>', 
        filter: { 
         term: '', 
         options: [{ id: 'CO', value: 'Navy' }, { id: 'CO', value: 'Army' }, { id: 'SB', value: 'Hp' }] 
        }, 
        cellFilter: 'mapCompany' 
       } 
      ]; 
      ApplicationService.getData(function (response) { 
       if (response) { 
        $scope.gridOptions.data = response.data; 
        response.data.forEach(function addDates(row, index) { 
         var companyName = row.company; 
         if (companyName === 'Navy') 
          row.company = 'CO'; 
         else if (companyName === 'Army') 
          row.company = 'CO'; 
         else if (companyName === 'Hp') 
          row.company = 'SB'; 
        }); 
       } 
       else { 
        $scope.gridOptions.data = null; 
       } 
      }); 
     } 
    ]) 
    .filter('mapCompany', function() { 
      var genderHash = { 
       'CO': ['Navy'], 
       'CO': ['Army'], 
       'SB': ['Hp'] 
      }; 
      return function (input) { 
       if (!input) { 

        return ''; 
       } 
       else { 
        return genderHash[input]; 
       } 
      }; 
     }) 
    .directive('myCustomDropdown', function() { 
      return { 
       template: '<input ng-model="colFilter.term" >' 
      }; 
     }) 

回答

0
 filter: { 
       condition: function(searchTerm,cellValue) { 
        if(!searchTerm || searchTerm === '') { 
        return true; 
        } 

        if(searchTerm === 'CO') { 
        if(cellValue === 'Navy' || cellValue === 'Army') { 
        return true; 
        } 
        } 
        if(searchTerm === 'SB') { 
        if(cellValue === 'Hp') { 
        return true; 
        } 
        } 
        return false; 
       } 
       } 

我應該用在gridOptions過濾參數,而不是用cellFilter的Hashmap

0

您寫道:

var genderHash = { 
      'CO': ['Navy'], 
      'CO': ['Army'], 
      'SB': ['Hp'] 
     }; 

變化:

var genderHash = { 
      'CO': 'Navy', 
      'CO': 'Army', 
      'SB': 'Hp' 
     }; 

還請記住,您使用相同的密鑰創建了地圖"CO"

+0

你的回答解決了我的問題部分。但是,單靠「軍隊」在前端是不可見的。可能是因爲循環內的賦值row.company ='CO'(foreach)。 –

+0

@NirmalBalajiPackirisamy你可以在plunker中發佈演示嗎? –

+0

@NirmalBalajiPackirisamy更新了答案 –