DataTable的初始化與事件注冊


     TypeScript代碼:

      let tabledata = data as any[];
        if (this.dataTable) {
            this.dataTable.clear();
            this.dataTable.destroy();

          }
        /*
        *     ip = models.IPAddressField()
        access_time = models.DateTimeField()
        method = models.CharField()
        url = models.CharField()
        protocol = models.CharField()
        status_code = models.SmallIntegerField()
        size = models.BigIntegerField()
        referer = models.CharField()
        client = models.CharField()
        detail = models.CharField()*/
        let search:boolean|object;
        if (this.searchParams.keyword && this.searchParams.keyword.length>0){
          search = {"search": this.searchParams.keyword};
        }else {
          search = {};
        }
        this.dataTable = $('#eventstable').DataTable({
          'data'        : tabledata,
          'paging'      : true,
          'lengthChange': true,
          'searching'   : true,
          'ordering'    : true,
          'info'        : false,
          'autoWidth'   : false,
          'columns': [
            { title: "access_time", 'data': "access_time" },
            { title: "detail", 'data': "detail" }
          ]
        });

 事件注冊代碼,ES6的:

            let table = $('#dataTable').DataTable( {
                data: data,
                'paging'      : true,
                'lengthChange': true,
                'searching'   : true,
                'ordering'    : true,
                'info'        : false,
                'autoWidth'   : true,
                //使用對象數組,一定要配置columns,告訴 DataTables 每列對應的屬性
                //data 這里是固定不變的,name,position,salary,office 為你數據里對應的屬性
                columns: [
                    { data: 'id',title:"ID" },
                    { data: 'name',title:"名稱" },
                    { data: 'id',title:"操作" ,"render":function (data, type, row, meta ) {
                        return'<button type="button" data-id="'+data+'" class="btn btn-primary btn-sm">執行</button>';
                    }}
                ]
            } );
            $("button.btn-sm").on("click",function (event) {
                console.log($(event.target).attr("data-id"))
                return false
            })
            table.on("draw",function () {
                console.log("draw------>")
                $("button.btn-sm").on("click",function (event) {
                    console.log($(event.target).attr("data-id"))
                    return false
                })

            })

解釋一下,為什么這么寫,初始化完需要注冊一次,每次頁面page或者排序draw完需要再注冊一次,比較奇怪的事第一次init以后的draw不會引發draw事件,所以不得不為第一次初始化完成綁定了一次。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM