javascript - jQuery DataTables - Refactoring Code to remove 'aoColumn' duplication -
i'm using jquery datatables render timeline , each column represents day. have method called when each column (day) rendered , it's passed in date array.
is there better way write code below i'm not repeating myself 7 times whilst still being able pass in array item? cannot see stands out in docs.
datatable = $('#example').datatable({ "bretrieve":true, "bprocessing":true, "aadata": data, // datatables requires render function 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]); } } ]
});
here simple solution, using $.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]); } }; }) });
in code above, array(7)
creates sparse array of 7 elements (indexed 0
6
), set undefined
. then, $.map()
projects object literals indices in array. result array of object literals second argument day()
varying current index.
Comments
Post a Comment