javascript - 我无法从函数 VUE JS 内部访问变量
问题描述
我无法从函数内部访问变量,如何在数据范围内访问?控制台中只出现一个空的全局 this 对象。
var app = new Vue({
el: '#app',
delimiters: ['{%', '%}'],
data: function () {
return {
boxes: [],
}
},
methods: {
// Обработчик кнопки
search_boxes: function (event) {
if(this.boxes.length == 0) {
this.get_boxes();
console.log(this);
console.log(this.boxes.length);
console.log(this.boxes);
}
console.log(this.boxes);
},
get_boxes: function () {
axios.get('/api/get_boxes')
.then(response => { this.boxes = response.data; })
.catch(e => { console.log(e); });
}
},
});
解决方案
axios.get()
是一个返回承诺的异步函数。因此,当您调用get_boxes()
它时,它会立即进行,而无需等待响应。因此,您的日志显示空boxes
变量
var app = new Vue({
el: '#app',
delimiters: ['{%', '%}'],
data: function () {
return {
boxes: [],
}
},
methods: {
// Обработчик кнопки
search_boxes: async function (event) {
if(this.boxes.length == 0) {
await this.get_boxes();
console.log(this);
console.log(this.boxes.length);
console.log(this.boxes);
}
console.log(this.boxes);
},
get_boxes: function () {
return axios.get('/api/get_boxes')
.then(response => { this.boxes = response.data; })
.catch(e => { console.log(e); });
}
},
通过将search_boxes()
函数转换为异步函数,我们可以等待响应的承诺。因此,当我们调用时,this.get_boxes()
我们将等到数据存储在this.boxes
.
推荐阅读
- c - 编写一个 C 程序,删除除最后一个字符之外的所有字符
- python - 计算python中不同数组出现的概率
- python - Pygame 中的程序地形生成是颠倒的
- r - R滚动减法矢量化替代for循环
- javascript - MongoDB中的TTL索引是否有替代方案,不会永久删除文档?
- python - python re match ip address
- database - 如何在 Laravel 中设计一个具有两个以上属性的实体的数据库模式?
- azure - 在 Azure Python SDK 返回值中“取消引用”子资源
- python - Windows 设备文件不使用 python win32API 返回有效句柄
- python - 为什么我的 y_test 和 y_train 存储为字符串?如何将它们转换为图像的数组表示?