我试图使用“ simple data grid”在单个页面上显示多个唯一的(表格)网格。在下面的代码中,我不清楚如何将唯一数据传递给下面的函数,而不是var data = ExampleData.fruits。到目前为止,我为添加具有唯一数据的第二张表所做的每一次尝试都导致所有数据被破坏。 (我确实需要所有现有功能在点击,分页等时突出显示)。

我创建了这个jsfiddle,它可以处理单个网格和示例数据。我已经为尝试使用的第二组数据注释了一些代码。

ExampleData = {};
ExampleData.handleMockjaxResponse = function(settings) {
var uri = new Uri(settings.url);
var page = uri.getQueryParamValue('page') || 1;
var order_by = uri.getQueryParamValue('order_by');
var sortorder = uri.getQueryParamValue('sortorder');
var rows_per_page = 6;
var start_index = (page - 1) * rows_per_page;
var total_pages = 1;
var data = ExampleData.fruits; //How can I pass this data so that multiple tables can exist with different data
if (data.length != 0) {
    total_pages = parseInt((data.length - 1) / rows_per_page) + 1;
}
if (order_by) {
    data.sort(function(left, right) {
        var a = left[order_by];
        var b = right[order_by];

        if (sortorder == 'desc') {
            var c = b;
            b = a;
            a = c;
        }
        if (a < b) {
            return -1;
        }
        else if (a > b) {
            return 1;
        }
        else {
            return 0;
        }
    });
}

最佳答案

问题的根源在于,您试图在同一URL('*')上设置两个模拟插座。您不能同时拥有它们。

如果您需要为给定的URL替换模拟插座,则需要先删除旧的:

$.mockjaxClear();
$.mockjax({
    url: '*',
    response: ... // whatever
});


但这仍然无法完全解决您的问题。通过在安装第二个模拟千斤顶之前清除第一个模拟千斤顶,我能够同时显示两个数据网格。但是尝试导航#grid表会导致一些有趣的错误(当然),因为在设置#grid时,应该提供该#grid2数据的模拟插座已被删除。

这是您应该做的:


为每个表使用不同的URL
为每个URL设置不同的模拟劫持


forked your fiddle有一个解决方案。它使用数据说明符指示要使用的数据集,并使用传统的lambda函数进行数据响应回调。

function generateMockjackResponse(dataIn) {
    return function(settings) {
        var uri = new Uri(settings.url);
        var page = uri.getQueryParamValue('page') || 1;
        var order_by = uri.getQueryParamValue('order_by');
        var sortorder = uri.getQueryParamValue('sortorder');

        var rows_per_page = 6;
        var start_index = (page - 1) * rows_per_page;

        var total_pages = 1;
        var data = dataIn;

        if (data.length != 0) {
            total_pages = parseInt((data.length - 1) / rows_per_page) + 1;
        }

        if (order_by) {
            data.sort(function(left, right) {
                var a = left[order_by];
                var b = right[order_by];

                if (sortorder == 'desc') {
                    var c = b;
                    b = a;
                    a = c;
                }

                if (a < b) {
                    return -1;
                }
                else if (a > b) {
                    return 1;
                }
                else {
                    return 0;
                }
            });
        }
        var result = {
            total_pages: total_pages,
            rows: data.slice(start_index, start_index + rows_per_page)
        };
        this.responseText = result;
    };
}

var data1 = [
    // some data
];

var data2 = [
    // other data
];

$.mockjax({
    url: '*',
    data: 1,
    response: generateMockjackResponse(data1)
});

$('#grid1').simple_datagrid({
    order_by: true,
    data: 1
});

$.mockjax({
    url: '*',
    data: 2,
    response: generateMockjackResponse(data1)
});

$('#grid2').simple_datagrid({
    order_by: true,
    data: 2
});

09-25 17:05
查看更多