我使用 Angularjs 和 dirPagination 插件来连接 Web API。这似乎工作正常。我添加了一个搜索功能,进行服务器端搜索:
$scope.searchChanged = function () {
if ($scope.searchFor.length == 0) {
$scope.calculatedValue = 'e';
} else {
vm.getData(vm.pageno, vm.getSearch($scope.searchFor));
}
}
vm.getSearch = function (query) {
if (query == undefined) {
query = 'tech';
} else {
query = query;
}
return query;
}
参见Plnkr完整代码 如果我开始搜索(例如销售),API 返回结果并且分页正确,则获取请求为:
/api/students/?category=sales&begin=1&pageSize=10
但是如果想要转到其他页码,向服务器的get请求是:
/api/students/?category=tech&begin=2&pageSize=10
View 如何记住查询“sales”,以便分页和结果正确?
最佳答案
您在这里犯了一个常见的错误:如果您已经在使用作用域变量,则不需要从 View 中传递变量。
更改为这一点会更不容易出错
// change this to var getSearch or function getSearch if you don't need it on the view anymore
vm.getSearch = function () {
var query = vm.searchFor;
// you should only use vm, change ng-model to data.searchFor
if (query == undefined) {
query = 'tech';
}
return query;
}
vm.getData = function () {
vm.users = [];
$http.get("/api/students/?category=" + vm.getSearch() + "&begin=" + vm.pageno + "&pageSize=" + vm.itemsPerPage).success(function (response) {
vm.users = response.data;
vm.total_count = response.total_count;
});
};
关于javascript - 记住在函数中使用的搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367718/