Правильный способ проверить, была ли уже инициализирована таблица yajra / laravel? - PullRequest
1 голос
/ 17 июня 2020

Используется laravel 5.7 / jquery 3 / blade app Я использую yajra / laravel -datatables- oracle 8 и открываю его в модальном диалоговом окне, и я открываю это диалоговое окно во второй / третий раз, когда я получил предупреждающее сообщение:

DataTables warning: table id=get-fee-dt-listing-table - Cannot reinitialise DataTable

В файле лезвия:

<div class="modal-body">

    <div class="table-responsive dataTables_header">
        <table class="table table-bordered table-striped text-primary" id="get-fee-dt-listing-table">
            <thead>
            <tr>
                <th></th>

и в. js файл:

bookingsAndAvailability.prototype.showFeesSelection = function () {
    console.log('showFeesSelection::')
    $("#div_check_in_fees_modal").modal({
        "backdrop": "static",
        "keyboard": true,
        "show": true
    });



    // var dtListingTable= document.getElementById('get-fee-dt-listing-table')
    // dtListingTable  = null // If to uncomment these 2 lines - they do not help

    $("#get-fee-dt-listing-table").html('') // // If to uncomment these 2 lines - they do not help

    oTable = $('#get-fee-dt-listing-table').DataTable({
        processing: true,
        language: {
            "processing": "Loading fees..."
        },

Я закрываю модальное окно командой:

$("#div_check_in_fees_modal").modal('hide');

какой правильный способ проверить, была ли таблица уже инициализирована?

Спасибо!

1 Ответ

1 голос
/ 17 июня 2020

Для этого вы можете использовать $.fn.dataTable.isDataTable().

Из документов:

Этот метод предоставляет возможность проверить, является ли узел таблицы уже DataTable или нет. Это может быть полезно, чтобы гарантировать, что вы не повторно инициализируете таблицу, которая уже является DataTable.

Обратите внимание, что это функция stati c, доступ к которой осуществляется через объект $ .fn.dataTable , а не экземпляр API. Доступ к нему можно получить в любое время, даже до того, как на странице будут созданы какие-либо таблицы данных.

if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {
  $('#example').dataTable();
}

В вашем случае это будет примерно так:

if (! $.fn.DataTable.isDataTable('#get-fee-dt-listing-table')) {
    oTable = $('#get-fee-dt-listing-table').DataTable({
        processing: true,
        language: {
            "processing": "Loading fees..."
        },
    ...
}
...