Today I have to debug my todo App, but can’t see the todo array elements in console.log
Code:
<template> <!-- TEMPLATE FOR THE WHOLE APP --> <div class="container" @click="deleteTodo"> <Todolist :todos="todos" :check="check" :updateTodo="updateTodo" :deleteTodo="deleteTodo" /> </div> </template> <script> import Todolist from './components/Todolist'; export default { name: 'App', components: { Todolist, }, data () { return { todos: [ { id: 1, text: 'Making a cup of coffee', checked: true }, { id: 2, text: 'Making an VueJS todo app', checked: false }, .... ] } }, methods: { deleteTodo: function(id) => { return console.log(this.todos[id]); } }, }
I tried to do it in Parent and child components, but both didn’t work, even if I try this.todos.
Also got an undefined message:
Can someone help me out?
Thanks in advance
Advertisement
Answer
Make deleteTodo
as a normal function, rather than arrow function.
Don’t use arrow functions on an options property or callback, such as created: () => console.log(this.a) or vm.$watch(‘a’, newValue => this.myMethod()). Since an arrow function doesn’t have a this, this will be treated as any other variable and lexically looked up through parent scopes until found, often resulting in errors such as Uncaught TypeError: Cannot read property of undefined or Uncaught TypeError: this.myMethod is not a function.
Refer to here.
deleteTodo: function() { console.log(this.todos); }