2016-11-27 147 views
0

我是一个新手谈到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"} 
    ]; 
}()); 

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

回答

0

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

一般来说是可以做到的:

  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上检出此问题。