Bootstrap-table:多个表,一个函数

时间:2017-04-10 13:59:03

标签: javascript jquery apply bootstrap-table

我正在使用bootstrap-table的自定义ajax实现(文档:http://bootstrap-table.wenzhixin.net.cn/documentation/):

出于某种原因,我想有多个引导表(让我们称之为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
    });

ajax提供者:

// 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

1 个答案:

答案 0 :(得分:0)

终于找到了我的答案,我必须将它包装为一个函数,以使bootstrap表能够传递其数据:

自我解决了我的问题:

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
    });