当涉及到javascript时,我是新手。我正在使用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文件作为数据源进行测试)时,当我选择“Requested”或“Declined”作为过滤条件时,数据不再被过滤。我正在使用文档中提到的格式 -
(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"}
];
}());
在这种情况下,我无法理解如何实现过滤!
答案 0 :(得分:0)
原因是过滤应该在代码中实现。
一般情况下可以这样做:
在您的情况下,您可以在后端添加端点,这将加载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上查看此问题。