jsGrid插件 - 如何过滤远程数据?
我是一个新手谈到JavaScript。我使用jsGrid插件在浏览器中显示网格。网格列标题将具有值“请求状态”和“请求ID”。我可以使它与静态数据一起工作。jsGrid插件 - 如何过滤远程数据?
(function() { var adminDashboardController = {
loadData: function(filter) {
return $.grep(this.requests, function(request) {
return (!filter.Status || request.Status === filter.Status)
&& (!filter.RequestId || request.RequestId.indexOf(filter.RequestId) > -1)
});
},
insertItem: function(insertingReq) {
},
updateItem: function(updatingReq) {
},
deleteItem: function(deletingReq) {
}
};
window.adminDashboardController = adminDashboardController;
adminDashboardController.status = [
{ Name: ""},
{ Name: "Requested"},
{ Name: "Declined"}
];
//This is the static data
adminDashboardController.requests = [
{ "Status": "Requested", "RequestId": "1"},
{ "Status": "Declined", "RequestId": "2"}
];
}());
但是,当涉及到从一个Ajax调用获取数据(使用测试作为数据源的JSON文件),数据不再被过滤,当我选择“请求”或“拒绝”为过滤标准。我使用的文件中提到的格式是这样的 -
(function() { var adminDashboardController = {
loadData: function (filter) {
return $.ajax({
type: "GET",
dataType: "json",
url: "/json/db514.json",
data: filter
});
},
insertItem: function(insertingReq) {
},
updateItem: function(updatingReq) {
},
deleteItem: function(deletingReq) {
}
};
adminDashboardController.status = [
{ Name: ""},
{ Name: "Requested"},
{ Name: "Declined"}
];
}());
我不明白如何在这种情况下实现过滤!
回答:
的原因是,滤波应在代码来实现。
一般来说是可以做到的:
- 客户端(就像你的第一个样品中)
- 在后端上,那么你必须过滤器传递给你的终点,这将做过滤和返回数据。
- 相结合的办法(部分的后端和后在客户端上)
在你的情况,你既可以在后台添加一个终点,这将载入JSON和过滤数据,或者仍然在客户端过滤,例如:
loadData: function (filter) { return $.ajax({
type: "GET",
dataType: "json",
url: "/json/db514.json"
}).then(function(requests) {
return $.grep(requests, function(request) {
return (!filter.Status || request.Status === filter.Status)
&& (!filter.RequestId || request.RequestId.indexOf(filter.RequestId) > -1)
});
});
}
在GtiHub https://github.com/tabalinas/jsgrid/issues/32上检出此问题。
以上是 jsGrid插件 - 如何过滤远程数据? 的全部内容, 来源链接: utcz.com/qa/257189.html