Я пытаюсь немного зайти в vue.js, и у меня возникают проблемы с отправкой элемента в массив. Приведенный ниже код основан на учебнике по scrimba, и сначала я немного его уточнил, но затем я получил ошибку: «Uncaught typeError: Cannot read property 'push' of undefined».

Поэтому я упростил его, пока не вернулся к основам из учебника. Однако ошибка остается ..

let app = new Vue({
    el: '#toDoApp',
    data: {
        todos: [
            { text: 'Learn JavaScript' },
            { text: 'Learn Vue' },
            { text: 'Build something awesome' }
        ]
    }
});

toDoApp.todos.push({ text: 'New item' });

После оператора push в списке должно быть 4 элемента, а не 3, которые я вижу.

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

0
Robin G 28 Окт 2019 в 23:42

1 ответ

Лучший ответ

this.todos.push({ text: 'New item' });

ИЛИ

app.todos.push({ text: 'New item' });

1
Asolace 28 Окт 2019 в 23:49
Итак, в vue.js «приложение». равно "это".?
 – 
Robin G
29 Окт 2019 в 00:14
Ваш let app = new Vue({...}) создает экземпляр new Vue; тем самым установив new Vue в переменную app. Обычно это относится к любому языку программирования. Вы также можете проверить, как это делается здесь: dev. to/hugoliconv/lets-build-a-todo-app-using-vuejs-52in
 – 
Asolace
29 Окт 2019 в 02:15
1
Спасибо за объяснение! Я вижу, что было поздно, потому что могу поклясться, что установил переменную toDoApp, ха-ха.
 – 
Robin G
29 Окт 2019 в 08:48