2017-04-10 112 views
0

我对自举表(文件:http://bootstrap-table.wenzhixin.net.cn/documentation/):一个自定义的Ajax实现引导表:多个表,一个功能

出于某种原因,我想有多个引导表(姑且称之为searchTable1,searchTable2等)。每个表格都将设置在自定义日期范围内(最后30天,最后60天等)。

我想传递一个参数(如表JQuery选择器或任何data-myCustomDataAttribute参数)。我怎样才能做到这一点 ? (我试过使用call但bootstrap已经在ajaxCallback函数中调用它,所以看起来我不能在这里使用它)。 根据表格的不同,使x功能完全相同,除了两个字段外,看起来会很愚蠢。有人有想法做到这一点吗?

这里是我的代码:

$('#searchTable').bootstrapTable({ 
     columns: [{ 
      field: 'product', 
      title: 'Produit' 
     } , { 
      field: 'language', 
      title: 'Langue' 
     }, { 
      field: 'comment', 
      title: 'Commentaire' 
     }], 
     showRefresh: true, 
     ajax: provideFeedbacksList, 
     cache: false, 
     dataField: 'feedbacks', 
     totalField: 'total_size', 
     search: false, 
     sidePagination: 'server', 
     pagination: true 
    }); 

阿贾克斯提供商:

// I only used this example : http://issues.wenzhixin.net.cn/bootstrap-table/index.html#options/custom-ajax.html 
function provideFeedbacksList(params) { 
    let tableData = params.data; 

    let serverCall = {}; 

    // add limits and offset provided by bootstrap table 
    serverCall["page_offset"] = tableData.offset; 
    serverCall["page_size"] = tableData.limit; 

    // retrieve the date range for this table : 
    // will be easy If something like this was possible : params.jquerySelector.attr("date-range-start") 
// will be easy If something like this was possible : params.jquerySelector.attr("date-range-end") 

    let json = JSON.stringify(serverCall); 

    $.ajax({ 
     url: baseUri + "/feedbacks", 
     type: "POST", 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     data: json, 
     success: function (reponse) { 
      params.success(reponse); 
     }, 
     error: function (er) { 
      params.error(er); 
     } 
    }); 
} 

奖金,调用堆栈:
call stack

回答

0

终于找到我的答案,我必须包装器它作为启用引导表的功能还可以传递其数据:

自我解决我的问题:

JS:

function callbacker(test){ 
    console.log(test); 
    return function (params) { 
     console.log(params); 
     console.log(test); 
     let tableData = params.data; 

     let serverCall = {}; 

     // add limits and offset provided by bootstrap table 
     serverCall["page_offset"] = tableData.offset; 
     serverCall["page_size"] = tableData.limit; 

     let json = JSON.stringify(serverCall); 

     $.ajax({ 
      url: baseUri + "/feedbacks", 
      type: "POST", 
      dataType: "json", 
      contentType: "application/json; charset=utf-8", 
      data: json, 
      success: function (reponse) { 
       params.success(reponse); 
      }, 
      error: function (er) { 
       params.error(er); 
      } 
     }); 
    } 
} 

HTML:

$('#searchTable').bootstrapTable({ 
     columns: [{ 
      field: 'product', 
      title: 'Produit' 
     } , { 
      field: 'language', 
      title: 'Langue' 
     }, { 
      field: 'comment', 
      title: 'Commentaire' 
     }], 
     showRefresh: true, 
     ajax: callbacker("whatEverValueYouWant"), 
     cache: false, 
     dataField: 'feedbacks', 
     totalField: 'total_size', 
     search: false, 
     sidePagination: 'server', 
     pagination: true 
    });