Я успешно создал список задач без каких-либо проблем.Однако я попытался еще больше адаптировать приложение, чтобы оно также отображало таблицу всех задач.
Все отлично работает, кроме части удаления.
Теперь у меня есть 2 функции jQuery для прослушивания нажатия клавиши удаления (одна для списка и одна для таблицы):
// ============= Remove todo from the list and Database ============
$('.list').on('click', 'span', function(e){
e.stopPropagation();
removeTodo($(this).parent()); // Remove todo from the list and
Database
})
// ============== Remove todo from the table and Database ==========
$('tbody').on('click', '.btn-danger', function(e){
e.stopPropagation();
table // remove row from table - Start
.row($(this).parents('tr')) // ...
.remove() // ...
.draw() // remove row from table - End
removeOnt($(this).parent()); // Remove from database - HOWEVER, NOT WORKING
})
Затем у меня есть функция, которая удаляет задачу:
function removeTodo(todo){
var clickedId = todo.data('id'); // I know the problem with removing the data from the database when I call the function from the table jQuery call, doesn't work
var deleteUrl = '/api/todos/' + clickedId;
$.ajax({
method: 'DELETE',
url: deleteUrl
})
.then(function(data){
todo.remove();
})
.catch(function(err){
console.log(err);
})
}
Проблема с функцией удаления записи из базы данных с помощью вызова таблицы связана с тем, что " var clickedId = todo.data ('id'); " is " неопределенные ».
Вышеупомянутые данные ('id') из todo.data ('id') определяют функцию "addTodo (todo) {}" как
var newTodo = $('<li class="task">'+todo.name +' <span>X</span></li>');
newTodo.data('id', todo._id);
Это код функции для создания строки таблицы:
function addTodoRow(todo){
table.row.add([
todo.name,
todo.created_date,
"<button type='button' class='btn btn-danger'>DELETE</button>"
]).draw();
if(todo.completed){
$('td').addClass('done');
}
}
Мой вопрос: как определить эквивалент " newTodo.data ('id ', todo._id);"в функции" addTodoRow (todo)", как мы это делали для" addTodo (todo)"?
Любая помощь приветствуется.
Заранее спасибо.
Стефан