Получить данные из кнопки внутри ошибки datatables - PullRequest
1 голос
/ 23 сентября 2019

У меня есть скрипт Datatables, как показано ниже.Datatable работает нормально, но когда я нажимаю кнопку edit, я получаю ошибку, подобную этой:

Uncaught TypeError: datatables.row не является функцией.

Как исправить код и получить идентификатор для кнопки редактирования?

let data_table = $('#categories_table');

let datatables = data_table.dataTable({
  "processing": true,
  "serverSide": true,
  "order": [
    [5, "asc"]
  ],
  ajax: '/admin/categories/datatables',
  columnDefs: [{
    'targets': 0,
    'searchable': false,
    'orderable': false,
    'render': function(data, type, full, meta) {
      return '<input type="checkbox" class="form-check-input-styled-primary" name="ids[]" value="' +
        $('<div/>').text(data).html() + '">';
    }
  }, {
    targets: -1,
    title: 'Actions',
    orderable: false,
    render: function(data, type, full, meta) {
      return `<a  href="#"  title="Edit User" class="list-icons-item text-primary-600 edit">
          <i class="icon-pencil7"></i>
        </a>
        <a href="#" title="Delete User" class="list-icons-item text-danger-600 delete">
          <i class="icon-trash"> </i>
        </a>`;
    },
  }]
});

datatables.on('click', '.edit', function(event) {
  event.preventDefault();
  var data = datatables.row($(this).closest('tr')).data();
  let id = data[1];
  let $edit_url = "/admin/categories/" + id + "/edit";

  $.post($edit_url, {
    id: id,
    csrf_token: $csrf
  }).done(function(data) {
    update_modal.modal("show");
    update_validator.resetForm();
    $(".modal-title").text("Edit User");
    update_modal.find("form")[0].reset();
    $("#id").val(data.id);
    $("#update_csrf").val($csrf);
    $("#update_name").val(data.name);
    $("#update_email").val(data.email);
    $("#update_role").val(data.role);
    $("#update_status").val(data.is_active);
  });
});

1 Ответ

1 голос
/ 24 сентября 2019

Вы можете изменить ваши правки следующим образом:

 {
                    targets: -1,
                    title: 'Actions',
                    orderable: false,
                    render: function( data, type, row, meta ) {
                        return '\
                        <button class="btn btn-outline bg-primary border-primary text-primary-800 btn-icon btn-sm edit" data-category='+ row[1] + '>\
                          <i class="icon-pencil7"></i>\
                        </button>\
                        <button title="Delete User" class="btn btn-outline bg-danger border-danger text-danger-800 btn-icon btn-sm e delete">\
                          <i class="icon-trash"> </i>\
                        </button>';
                    },
                }

, а затем, нажав кнопку редактирования, вы даже можете получить идентификатор категории следующим образом:

    let id = $(this).data("category");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...