通过API调用过滤数据
filtering data by API calls
我的页面上有一个表,并且为这个表定制了过滤器,所以默认情况下我使用API调用来加载数据。
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api1/rest/Events/'
});
在左边我有过滤器。这个过滤器我通过http获取方法
$http({
method: "GET",
url: "http://address:8080/events-api1/rest/EventTypeCategories"
}).then(function success(response) {
$scope.categories = response.data;
}, function error(response) {
$scope.categories = response.statusText;
});
和通过作用域函数渲染过滤器
$scope.selectCat = function () {
angular.forEach($scope.categories, function (category) {
if (category.selected) {
$scope.selectedAllCat = false;
if (category.name == "Study") {
$scope.checked = true;
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api1/rest/Events?category=1'
});
}
else if (category.name == "Corporate") {
$scope.checked = true;
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api1/rest/Events?category=2'
});
}
else if (category.name == "Safety") {
$scope.checked = true;
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api1/rest/Events?category=3'
});
}
else if (category.name == "Partners") {
$scope.checked = true;
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api1/rest/Events?category=4'
});
}
else if (category.name == "Standards") {
$scope.checked = true;
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api1/rest/Events?category=5'
});
}
else if (category.name == "Technology") {
$scope.checked = true;
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api1/rest/Events?category=6'
});
}
}
});
};
html
<div class="panel-body">
<table class="table">
<tr>
<td class="col-md-1"> <input type="checkbox" ng-model="selectedAllCat" ng-click="selectAllCat()"> </td>
<td class="col-md-9">All</td>
<td class="col-md-2">
{{ categories.length }}
</td>
</tr>
<tr ng-repeat="category in categories | orderBy : 'id' ">
<td class="col-md-1"> <input type="checkbox" ng-model="category.selected" ng-click="selectCat()"> </td>
<td class="col-md-9">{{ category.name }}</td>
<td class="col-md-2">
{{ category.selected }}
</td>
</tr>
</table>
</div>
<table id="table"
data-flat="true"
data-toggle="table"
data-toolbar="#toolbar"
data-search="true"
data-show-toggle="false"
data-show-columns="true"
data-show-export="true"
data-filter-control="true"
data-events="operateEvents"
data-formatter="operateFormatter"
data-response-handler="responseHandler"
class="table-striped">
</table>
我的问题是,对于多个类别的选择,我必须做什么?
编辑:有更多解释
您的目标是组成查询字符串,以便能够对多个类别进行筛选。
当您想要类别1时,您可以执行以下请求:
http://address:8080/events-api/rest/Events类别=1
现在,您想用一个请求过滤类别1和6,所以您的请求应该是这样的:
http://address:8080/events-api/rest/Eventscategory=1&类别=6
因此,在您的代码中,您应该:
1更改标记自:
<td class="col-md-1"> <input type="checkbox" ng-model="category.selected" ng-click="selectCat()"> </td>
收件人:<td class="col-md-1"> <input type="checkbox" ng-click="updateFilter(category.id)"> </td>
2以下功能将帮助我们跟踪当前标记的过滤器:
$scope.selectedFilters = [];
$scope.updateFilter = function(categoryId) {
if ($scope.selectedFilters.indexOf(categoryId) > -1) {
$scope.selectedFilters.push(categoryId);
} else {
$scope.selectedFilters.splice($scope.selectedFilters.indexOf(categoryId), 1);
}
//Optional, to reload on change.
$scope.requestEvents();
}
3:以下请求数据的功能基于选定的筛选器,也可以在完全没有筛选器的情况下工作。
$scope.requestEvents() {
var url = 'http://address:8080/events-api/rest/Events';
if ($scope.selectedFilters.length > -1) {
var queryString = '?category=';
queryString += $scope.selectedFilters.join('&category=');
url += queryString;
}
$('#table').bootstrapTable('refreshOptions', {
'url': url
});
}
--旧版本--不确定这是否会从第一次就很清楚,但这是因为你方缺乏细节。因此,保持现有的代码样式,就可以编写这样的东西。
$scope.filterByCategory = function(categories) {
//Assuming you have in categories, an array of numbers, (or
//strings, anyway they should match categories from your backend)
categories = categories.join('&category=');
$('#table').bootstrapTable('refreshOptions', {
url: 'http://address:8080/events-api/rest/Events?category=6' + categories
}
注意,根据您的后端,查询字符串可能应该由('&category[]=')连接,而不是由('&category=')
- 过滤AngularJs中的数据
- 通过API调用过滤数据
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- 如何用javascript过滤JSON数据
- 如何使用javascript、jquery或其他javascript框架过滤数据
- 在解析时使用变量过滤数据
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 过滤包含一些文本的 PHP 数据表
- 如何使用 AngularJs 过滤 JSON 数据
- 如何过滤对象内部深度堆叠的数据(并在之后编辑删除它)
- 如何用使用剔除数据和“数据”两者计算的数据来过滤数据;外部“;数据
- 当我想对redux容器中的数据进行排序或过滤时,我该如何查看它的状态
- d3在鼠标悬停上过滤数据之后从选择中提取值
- 使用AngularJS过滤JSON数据
- AJAX 数据过滤不起作用
- 使用 Firebase 数据过滤 ng 重复
- Ember数据-过滤hasMany关系的对象
- 我如何处理数据过滤上的一个按钮点击D3.js
- Div类搜索使用数据过滤属性
- Javascript -数据过滤和删除换行符