我使用parse.js从类星体SPA构建中的数据库中提取数据(基于vue.js)。当通过一个方法调用数据时,从我的数据库中获取数据时,我得到数据未定义,但当我把它直接放入创建函数时,它是有效的。我猜他们可能在不同的范围(?),但我不知道为什么。
如此:
export default {
name: "MyPage",
data() {
return {
myData: []
};
},
created: async function() {
let query = new parse.Query("TheData");
const results = await query.find();
this.myData = results;
console.log(this.myData);
}
但是当我将数据封装到一个方法中时,它返回
TypeError: Cannot set property 'myData' of undefined
export default {
name: "MyPage",
data() {
return {
myData: []
};
},
created: async function() {
this.getTheData();
},
methods: {
getTheData: async () => {
let query = new parse.Query("TheData");
const results = await query.find();
this.myData = results; // TypeError: Cannot set property 'myData' of undefined
console.log(this.myData);
},
我建议您尝试更改这个
created: async function() {
this.getTheData();
}
async mounted() {
this.getTheData();
}
根据文档,它说:
不要在选项属性或回调中使用箭头函数,比如Created: () =>Console.log (this.a)或vm. log。$ watch ('a', newValue =>这一点。myMethod())。因为箭头函数没有这个,这个将被视为任何其他变量和词汇查找通过父作用域,直到找到为止,通常会导致诸如Uncaught之类的错误无法读取未定义或未捕获的属性这一点。myMethod不是函数
https://v2.vuejs.org/v2/guide/instance.html Instance-Lifecycle-Hooks