У меня есть компонент Vue (2.5+), в котором я устанавливаю свойство данных для нового объекта Foo
. Использование foo.bar()
в обработчике кликов вызывает метод правильно, но выдает Uncaught TypeError: cannot set property 'someVariable' of null
при попытке изменить свойства внутри класса Foo
. Настройка так, что Foo
является литералом объекта вместо класса, также не устраняет ошибку.
Я подозреваю, что с this
что-то странное происходит между компонентом и классом?
Vue компонент
import Foo from './foo.js'
export default {
template: `<div @click="foo.bar"></div>`,
data() {
return {
foo: new Foo()
}
},
created() {
console.log(foo); // foo is not null here
}
}
класс Foo
export default class Foo
{
constructor()
{
this.someVariable = 0;
}
bar(e)
{
// modify this.someVariable
}
}
но если я изменю компонент vue для ссылки на внешний метод через его собственное свойство "method", он будет работать.
Vue компонент (рабочий)
import Foo from './foo.js'
export default {
template: `<div @click="bar"></div>`,
data() {
return {
foo: new Foo()
}
},
methods: {
bar(e) {
this.foo.bar(e);
}
}
}