angularjs custom filter to check for values inside a data array

后端 未结 5 957
野趣味
野趣味 2020-12-02 02:34

I have two filters which filter the data according to the queue key in the data. Here is my code :

5条回答
  •  情书的邮戳
    2020-12-02 03:22

    I have modified your snippet as per your given array. Its working fine as per your need.

    var app = angular.module('app', []);
    
    app.controller('mainController', function($scope) {
      // Data object
      /*
      $scope.servers = [{
          name: 'ServerA',
          queue: '111'
        },
        {
          name: 'Server7',
          queue: '111'
        },
        {
          name: 'Server2',
          queue: '456'
        },
        {
          name: 'ServerB',
          queue: '456'
        },
      ];
      */
      $scope.servers = [
        {name:'ServerA', queuearr:[{'queue' :'111'}]},
        {name:'Server7', queuearr:[{'queue' :'111'}]},
        {name:'Server2', queuearr:[{'queue' :'456'}]},
        {name:'ServerB', queuearr:[{'queue' :'456'}]},
    ];
    
      // Filter defaults
      $scope.Filter = new Object();
      $scope.Filter.queue = {
        'PAV': '111',
        'UAT': '456'
      };
    
    });
    
    // Global search filter
    app.filter('searchFilter', function($filter) {
      return function(items, searchfilter) {
        var isSearchFilterEmpty = true;
        angular.forEach(searchfilter, function(searchstring) {
          if (searchstring != null && searchstring != "") {
            isSearchFilterEmpty = false;
          }
        });
        if (!isSearchFilterEmpty) {
          var result = [];
          angular.forEach(items, function(item) {
            var isFound = false;
            angular.forEach(item.queuearr, function(term, key) {
              if (term.queue != null && !isFound) {
                term.queue = term.queue.toString();
                term.queue = term.queue.toLowerCase();
                angular.forEach(searchfilter, function(searchstring) {
                  searchstring = searchstring.toLowerCase();
                  if (searchstring != "" && 
                  term.queue.indexOf(searchstring) != -1 &&
                  !isFound) {
                    result.push(item);
                    isFound = true;
                  }
                });
              }
            });
          });
          return result;
        } else {
          return items;
        }
      }
    });
    
    
       
    Name Queue
    {{server.name}} {{server.queuearr[0].queue}}

提交回复
热议问题