Получить таблицу вызовов из столбца - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть несколько таблиц Bootstrap на одной странице.Каждая таблица имеет некоторые атрибуты данных (например, data-link="test-page" и т. Д.).Кроме того, в одном столбце каждой таблицы Bootstrap используется форматер столбцов , использующий data-formatter="actionFormatter".Однако я хочу получить текущие атрибуты данных таблицы при вызове actionFormatter, поэтому на основании атрибутов данных я могу вернуть строку.

И this, и $(this) возвращают объект, который не работает.$(this).closest('table').data() тоже не работает, хотя я ожидал, что он будет наиболее верным.

Вот код, который я использую:

<th data-field="actions" data-formatter="actionFormatter" data-events="actionEvents">Actions</th>

this возвращает объект JSON ссвойства строки и $(this).closest('table').data(XXX) возвращают неопределенное значение.Я ожидал, что он вернет массив со всеми атрибутами данных.

Есть ли способ получить текущую таблицу обработки из средства форматирования?

Пример кода:

<!-- table 1 -->
<table
    data-actions="edit,remove"
    data-url="some/url"
>
    <thead>
        <tr>
            <th data-formatter="actionFormatter">Actions</th>
        </tr>
    </thead>
</table>

<!-- table 2 -->
<table
    data-actions="edit,remove"
    data-url="some/url"
>
    <thead>
        <tr>
            <th data-formatter="actionFormatter">Actions</th>
        </tr>
    </thead>
</table>


// actionFormatter:
function actionFormatter(value, row, index, field) {
    // get data-actions from the right table somehow, 
    // and return a string based on data-url/other
    // data attributes
}

1 Ответ

1 голос
/ 30 апреля 2019

Похоже, что при вызове средства форматирования действий контекст выполнения this является объектом со всеми данными, связанными со строкой таблицы начальной загрузки, а также со всеми атрибутами data-* строки.

Принимая это во внимание, вы можете добавить идентификатор для каждой таблицы и атрибут data-table-id для ваших строк, например:

<table
    id="table-1"
    data-actions="edit,remove"
    data-url="some/url"
>
<thead>
    <tr>
        <th data-formatter="actionFormatter" data-table-id="table-1">Actions</th>
    </tr>
</thead>

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

function actionFormatter(value, row, index, field) {
    // get data-actions from the right table somehow, 
    // and return a string based on data-url/other
    // data attributes
    var data = $('#' + this.tableId).data();
}
...