Могу ли я использовать pace вместо обработки таблицы данных?

#jquery #datatable #pace

#jquery #datatable #pace

Вопрос:

Я бы хотел использовать PACE для ajax-запросов Datatable. Итак, я отключил обработку данных как processing : false . И тогда что мне нужно для обработки панели обработки PACE для отображения ajax-запросов каждого Datatable?

Ответ №1:

Похоже, что он должен просто работать по умолчанию для запросов AJAX, если вы хотите, чтобы он применялся для сортировки / обработки событий, вам может понадобиться что-то вроде следующего:

Адаптировано из https://datatables.net/reference/event/processing Вероятно, вы захотите запустить PACE в событии обработки данных по звукам вещей:

 $('#dataTable')
    .on( 'processing.dt', function ( e, settings, processing ) {
        if(processing){
            Pace.start();
        } else {
            Pace.stop();
        }
    })
.dataTable();
  

Комментарии:

1. Вы также можете использовать события preXhr и xhr, если это не работает автоматически в AJAX — datatables.net/reference/event/preXhr , и datatables.net/reference/event/preXhr для получения документации по этим конкретным событиям. Должно быть довольно тривиально адаптировать приведенные выше примеры к тем конкретным событиям (on preXhr.dt и on ‘on xhr.dt ), которые будут двумя событиями, требующими подключения

2. В моем приложении у меня много страниц, использующих datatable с разными идентификаторами . Могу ли я настроить глобально вместо изменения существующих кодов в качестве вашего ответа?

3. Это работа, как вы описали. Мне все еще нужно установить ajax параметр pace на false ?

4. Я бы предложил применить к ним класс, который затем можно использовать глобально, т.Е. $('.pace-dt').on... Если вы запускаете вручную Pace.start и Pace.stop через обработчики событий, вам может потребоваться установить значение false, если вы хотите предотвратить запуск других запросов AJAX, вызывающих Pace. Если применение класса не работает с приведенным выше, попробуйте что-то вроде $('.pace-dt').each(function(){ $(this).on.... })

5. Должен подчеркнуть, что я ожидаю, что PACE должен иметь возможность автоматически обнаруживать запросы AJAX, и запуск вручную не требуется, если не использовать его для чего-то вроде сортировки, что может занять некоторое время на стороне клиента.

Ответ №2:

Ну, если вы хотите показывать PACE для каждого ajax-запроса в своем приложении, вы можете указать его, как показано ниже

Добавление параметров темпа перед его загрузкой.

     <script>
        window.paceOptions = {
            ajax: {
                trackMethods: ['GET', 'POST', 'PUT', 'DELETE', 'REMOVE']
            }
        };

    </script>
    <script src="../js/progressBar/pace.min.js"></script>
  

При этом будет отображаться индикатор выполнения PACE для каждого ajax-запроса к вашему серверу.

Комментарии:

1. Да, вы правы.. Я также читал об этом из документации PACE , но я думаю, что это не влияет на запрос ajax DataTable. Но я не уверен, потому что я работаю на localhost, и запрос выполняется слишком быстро.

2. В моем случае он отлично работает при загрузке DataTables (через DataTables ajax-запрос). Можете ли вы создать JSFiddle свою проблему?

3. В моем случае это работает при первой загрузке страницы. Я также хотел бы получить это при запуске поиска по данным .

4. Вы выполняете обработку на стороне сервера или на стороне клиента? Если на стороне сервера, то он будет работать, если на стороне клиента, то не будет.

Ответ №3:

Просто использовать эту форму:

 $('#dataTable').on('processing.dt', function(e, settings, processing) {
    if (processing) {
      Pace.stop();
      Pace.bar.render();
    } else {
      Pace.stop();
    }
  }).DataTable();