2016-02-20 24 views
5

Tôi đang gặp sự cố khi thiết lập dữ liệu tùy chỉnhBộ nhớ sử dụng plugin Nút.DataTables: Uncaught TypeError: Không thể đọc các nút 'thuộc tính' không xác định

tôi có thể thiết lập một bố cục custom defaultdom rằng hoạt động:

//vanilla dom (frtip...) 
$.extend($.fn.dataTable.defaults, { 
    dom: 'frtip' 
}); 

Nhưng nếu tôi cố gắng include the "B" character in the dom layout:

// Invoke Buttons plugin (Bfrtip...) 
$.extend($.fn.dataTable.defaults, { 
    dom: 'Bfrtip' 
}); 

... sau đó chạy DataTables, lỗi JavaScript này được báo cáo:

Uncaught TypeError: Cannot read property 'buttons' of undefined

Tôi đang làm gì sai?

Vui lòng see an example of this at https://jsfiddle.net/jhfrench/at83rcoL/

Trả lời

10

Tôi đã tìm ra khi soạn thảo câu hỏi này. Chia sẻ câu trả lời khó thắng ở đây:

Nó không đủ để chỉ bao gồm các tài sản JS có liên quan (jquery.dataTables.min.js, dataTables.buttons.min.js, v.v.). Bạn cũng phải gọi các plugin Buttons bởi một trong hai mở rộng giá trị mặc định với các yếu tố button đối tượng:

// Invoke Buttons plugin (Bfrtip...) 
$.extend($.fn.dataTable.defaults, { 
    buttons: [ 'copy', 'csv', 'excel' ] 
}); 

Hoặc bạn có thể gọi nó ở dataTable() khởi:

$("#table2").DataTable({ 
    buttons: [ 
    'copy', 'excel', 'pdf' 
    ] 
}); 

Xem https://jsfiddle.net/jhfrench/at83rcoL/8/ cho examples of both approaches working.

+0

Hầu hết các tùy chọn tích hợp cho 'dom' có thể được tắt và tùy chọn' dom' vẫn có thể đề cập đến chúng và nó sẽ không phát nổ. Đáng buồn thay, đối với plugin nút, bạn phải bỏ qua 'B' nếu bạn không sử dụng các nút trên một cá thể DT cụ thể hoặc đảm bảo rằng nếu' B' nằm trong 'dom', thì' nút' được xác định trong tùy chọn. Điều này làm cho việc thiết lập một giá trị 'dom' mặc định tốt đẹp trên trang web bao gồm' B' có vấn đề, vì nó giả định rằng mỗi cá thể sẽ có các nút. Lần sau tôi làm việc này, tôi sẽ thử thiết lập mặc định của các nút 'false: false' hoặc' buttons: [] 'và xem nó có sửa lỗi không. – jinglesthula

+0

Thực ra, tôi đã thử nó thật nhanh trong fiddle ở trên :) Chắc chắn, trong ví dụ đầu tiên của fiddle (một nút w/o) nếu bạn đặt 'dom: 'Bfrtip'' và cung cấp' nút: [] 'nó công trinh! ('nút: false' ném một ngoại lệ) – jinglesthula

Các vấn đề liên quan