首先,封裝類,理解清楚你需要用的哪幾個變數,然後宣告,然後在類裡封裝函式,其中,constructor就是存放初始變數的地方。
這裡還是datatable的處理解決,
constructor(table) { this.data = {}; this.table = table }
inittable(table) { for (var i = 0; i < this.data.rowdata.length; i++) { this.data.rowdata[i].submit_status = 0 } this.data.col_define[this.data.col_define.length] = { `targets`: this.data.col_define.length, `title`: `上傳狀態`, `data`: `submit_status`, `render`: function (data, type, full, meta) { if (1 === data) { return `上傳成功` } else if (2 === data) { return `上傳失敗` } else { return `未上傳` } } }; console.log(this.data.col_define); console.log(this.data.rowdata); this.table = $(table).DataTable({ `language`: lan, "dom": `lB<"top"f><"toolbar">rt<"bottom"ip><"clear">`, "paging": true, "lengthChange": true, "info": true, `destroy`: true, "deferRender": true, `columns`: this.data.col_define, `data`: this.data.rowdata, }) }
在功能裡配置表格的配置,然後之前的res結果中的data改成this即可
success: function (res) { if (`ok` === res[`code`]) { if (department === 1) { salary_table = $(`#primary_excel_table`) } else if (department === 2) { salary_table = $(`#middle_excel_table`) } else if (department === 3) { salary_table = $(`#logistics_excel_table`) } alert(`解析完成!`); console.log(`返回資料是`, res[`data`]); sal.data = res[`data`]; console.log(sal.data); sal.inittable(modal_table);
這樣子,就能利用類,來動態定義表格,而且submit裡也直接配置了,不用再用之前部落格裡的render功能,
還有就是,字串的拼接
comcat_string(salary_info) { var items = []; Object.keys(salary_info).forEach(function (key) { if (key !== `名字` && key !== `部門` && key !== `身份證` && key !== `submit_status`) { items.push([key, salary_info[key]].join(`:`)); } }); return items.join(`|`) }
用到forEach方法,JS遍歷可以查詢的到方法類。
再者,就是ajax中,如果想要呼叫this下的變數,需要提前在外部宣告
_this=this
然後類似
_this.data.rowdata[a][`submit_status`] = 1;
自己看的,不喜勿噴,前端實習第11天,我也忘了具體,反正差不多是11把,頭很痛。。。。啦啦啦啦啦德瑪西亞