DataTables, функции стрелки es6 и это - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть следующая таблица данных инициализация, в которой я использую функцию preDrawCallback, чтобы скрывать и отображать нумерацию страниц и фильтры на основе количества записей в таблице.

Поскольку это часть проекта веб-пакета, я превратил его в es6, но мне пришлось отключить сокращение объекта для функции, поскольку я не могу найти способ получения текущей таблицы без использования this:

$tables.DataTable({
  preDrawCallback: function(settings) { // eslint-disable-line object-shorthand

    const $table = $(this); // is there a way to get this table without using this?
    
    // rest of code
  }
})

Изучив много документации, кажется, нет аргумента, который они передают в функцию, где я могу получить эту таблицу, и во всех примерах используется $(this).

У меня вопрос: нужно ли мне это использовать или есть какой-то другой способ получения таблицы, чтобы я мог изменить именованную функцию на функцию стрелки?

Обновление

Кажется, что я смотрел на неправильную проблему, и мне не нужно было все-таки использовать функции стрелок, и исправление ошибки ворса решило необходимость не использовать this (см. Ответ ниже), но на всякий случай, если кто-то не ' Я не хочу использовать this, после большого количества журналов консоли разных вещей, я обнаружил, что текущий идентификатор таблицы содержится в настройках, которые передаются, так что вы можете сделать

$(`#${settings.sTableId}`).DataTable();

1 Ответ

0 голосов
/ 14 сентября 2018

Если, как вы говорите, значение не передается в качестве параметра, вам нужно использовать обычную функцию.Обычные функции и функции стрелок имеют различное поведение для this, поэтому вам нужно будет выбрать правильный инструмент для работы.

Что касается той ошибки, которую вы видите, у которой нет ничего дляделать с функциями стрелок.Это просто говорит вам написать это так:

$tables.DataTable({
  preDrawCallback(settings) { // <-- using shorthand on this line
    const $table = $(this); 

    // rest of code
  }
});
...