Вы не должны использовать стрелочные функции для data
или methods
в Vue, потому что стрелочные функции имеют свой собственный контекст (this
)
repeateAgain: () => {
this.items.push({
В случае, когда repeateAgain
вызывается метод, this
контекст не определен - поэтому возникает ошибка ** TypeError: Невозможно прочитать свойство 'items' из undefined (this) **
Вы должны изменить его следующим образом:
repeateAgain() {
this.items.push({
Обновление
@submit.prevent="repeateAgain"
- вот что я имел в виду под «случаем». Поскольку метод не привязан к объекту methods: {
, но привязан к относительному контексту (здесь нет - не определено), с другой стороны, если он находится внутри класса, экземпляр класса будет контекстом.
Например, : (только для демонстрации, не используйте этот шаблон)
В следующем примере this
context является экземпляром MyWrappedCmp
import {
BForm, BFormGroup, BFormInput, BRow, BCol, BButton,
} from 'bootstrap-vue'
class MyWrappedCmp {
getComponent(){
return {
methods: {
repeateAgain: () => {
// “this” context is an instance of MyWrappedCmp
// ...
}
}
}
}
const myWrapped = new MyWrappedCmp()
export default myWrapped.getComponent()