JavaScript选择过滤器

时间:2016-05-12 13:31:07

标签: javascript jquery angularjs

背景:有一张桌子,我可以从中选择员工。我想按名称过滤这些员工。(我知道名字不是一个好的过滤方法,这只是一个例子) 基本上我有一个下拉选择其中一个过滤器。

我的声明:$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: ''
});

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

1 个答案:

答案 0 :(得分:0)

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