2016-05-12 92 views
1

背景:我有一张表可以选择员工。我想通过名称来过滤这些员工(我知道名称不是一种好的过滤方式,这仅仅是一个例子) 基本上我有一个下拉式选择过滤器。JavaScript选择过滤器

我的声明:$scope.filters = null;。 我也有这个减速选择我的过滤器$scope.chosenFilter= null;

我使用以下方法来获取不同的过滤器我已经$scope.filters = retrieveFilters(info.Names);

retrieveFilters如下所示:

var retrieveFilters = function(rows) { 

    var filterWrapper = document.querySelector(".filterWrapper"); 
    var datasetOptions = []; 

    $scope.predicate = 'Name'; 

    if (rows) { 
     //Add Default option 
     datasetOptions.push({ 
      name: $scope.data.Fnames.defaultFilterOptionLabel, 
      value: '' 
     }); 
     $scope.chosenFilter = datasetOptions[0]; 

     _.forEach(rows, function(ele) { 
      datasetOptions.push({ 
       name: ele, 
       value: ele 
      }); 
     }); 
    } else { 
     filterWrapper.style.display = "none"; 
      } 

    return datasetOptions; 
}; 

我使用以下方法来选择我的过滤器:

$scope.$watch('chosenFilter', function() { 
    var filterSearchInput = document.querySelector(".filterWrapper input"); 
    ng.element(filterSearchInput).triggerHandler('input'); 
}); 

一切很好,显示器在第一次加载时工作,因为我已经设置了默认值

//Add Default option 
datasetOptions.push({ 
    name: $scope.data.Fnames.defaultFilterOptionLabel, 
    value: '' 
}); 

从默认表中,每当我点击一个员工姓名hes详细信息显示。然而,无论何时我筛选并点击员工姓名,都不会显示任何内容。每当我点击默认表中的特定员工姓名,然后以相同名称过滤时,信息也会显示出来,因为我每次都会缓存它。

回答

0

我假设你使用ng-repeat在你的GUI的某个地方显示这些数据。 Angular有很多非常棒的内置功能。看看这里的答案:AngularJS custom search data by writing custom filter从角度方向更接近这一点。您也可能想查看此问题并回答:"Thinking in AngularJS" if I have a jQuery background?

+0

是的我正在使用ng-repeat进行显示,并且只要我从选项中选择特定名称,数据就会显示正常。但是,当我点击没有信息显示的实际行。但是,如果我点击默认表中的那一行,不是“过滤”,那么信息就会显示。我只是无法获取信息,无论何时被过滤,所以我认为我在做错误的过滤方式。 –

+0

是的,请查看我链接到上面的问题中的过滤。简而言之,ng-repeat具有内置过滤功能,并且使用它通常是最佳选择。 –