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"}

];

}());

我不明白如何在这种情况下实现过滤!

回答:

的原因是,滤波应在代码来实现。

一般来说是可以做到的:

  1. 客户端(就像你的第一个样品中)
  2. 在后端上,那么你必须过滤器传递给你的终点,这将做过滤和返回数据。
  3. 相结合的办法(部分的后端和后在客户端上)

在你的情况,你既可以在后台添加一个终点,这将载入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

回到顶部