1

我正在使用 jQuery DataTables 来呈现时间线,每列代表一天。我有一个方法,当每列(天)被渲染并且它从数组中传递一个日期时调用。

有没有更好的方法来编写下面的代码,这样我就不会重复自己 7 次,同时仍然能够传入数组项?我在文档中看不到任何突出的内容。

dataTable = $('#example').dataTable({
"bRetrieve":true,
"bProcessing":true,
"aaData": data,
// DataTables requires a render function for each column (day)
"aoColumns":[
    {
        "mData":null,
        "fnRender":function (obj) {
            return day(obj, week[0]);
        }
    },
    {
        "mData":null,
        "fnRender":function (obj) {
            return day(obj, week[1]);
        }
    },
    {
        "mData":null,
        "fnRender":function (obj) {
            return day(obj, week[2]);
        }
    },
    {
        "mData":null,
        "fnRender":function (obj) {
            return day(obj, week[3]);
        }
    },
    {
        "mData":null,
        "fnRender":function (obj) {
            return day(obj, week[4]);
        }
    },
    {
        "mData":null,
        "fnRender":function (obj) {
            return day(obj, week[5]);
        }
    },
    {
        "mData":null,
        "fnRender":function (obj) {
            return day(obj, week[6]);
        }
    }
]

});

4

1 回答 1

1

这是一个简单的解决方案,使用$.map()

dataTable = $("#example").dataTable({
    bRetrieve: true,
    bProcessing: true,
    aaData: data,
    aoColumns: $.map(Array(7), function(value, index) {
        return {
            mData: null,
            fnRender: function(obj) {
                return day(obj, week[index]);
            }
        };
    })
});

在上面的代码中,Array(7)创建了一个包含七个元素(索引06)的稀疏数组,所有元素都设置为undefined。然后,$.map()从该数组中的索引投影对象文字。结果是一个对象字面量数组,其中第二个参数day()随当前索引而变化。

于 2013-08-13T10:24:48.143 回答