背景:有一张桌子,我可以从中选择员工。我想按名称过滤这些员工。(我知道名字不是一个好的过滤方法,这只是一个例子) 基本上我有一个下拉选择其中一个过滤器。
我的声明:$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: ''
});
每当我点击员工姓名时,都会从默认表中显示他的详细信息。但是,无论何时我过滤并单击员工姓名,都不会显示任何内容。每当我点击默认表中的特定员工姓名,然后以相同名称过滤时,信息也会显示,因为我每次都会缓存它。
答案 0 :(得分:0)
我假设您使用ng-repeat在GUI中的某个位置显示此数据。 Angular有很多很棒的内置功能。在这里查看答案:AngularJS custom search data by writing custom filter以便从Angular方向更多地接近这个问题。您也可以查看此问题并回答:"Thinking in AngularJS" if I have a jQuery background?。