【发布时间】:2020-12-21 10:52:22
【问题描述】:
我正在尝试创建一个组件,该组件在页面加载时执行对我的后端的请求,接收一些数据并将这些数据显示在 vuetify-datatable 上。我设法获取了数据,但我的表格不会显示它,因为它只是空的。
这是组件:
<template>
<v-simple-table dark>
<template v-slot:default>
<thead>
<tr>
<th class="text-left">
Asset
</th>
<th class="text-left">
Total
</th>
</tr>
</thead>
<tbody>
<tr
v-for="item in balances"
:key="item.asset">
<td>{{ item.asset }}</td>
<td>{{ item.total }}</td>
</tr>
</tbody>
</template>
</v-simple-table>
</template>
<script>
var balancesArr = []
fetch('http://127.0.0.1:8000/binance/getbalance')
.then(response => response.json())
.then(data => {
balancesArr = data
console.log(balancesArr)
})
export default {
data () {
return {
balances: balancesArr,
}
},
}
</script>
这里是main.js:
import Vue from "vue/dist/vue.js";
import Vuex from "vuex";
import storePlugin from "./vuex/vuex_store_as_plugin";
import App from './App.vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
import Vuetify from "vuetify";
import "vuetify/dist/vuetify.min.css";
Vue.use(Vuetify);
Vue.use(Vuex);
Vue.use(storePlugin);
Vue.config.productionTip = false;
Vue.use(VueAxios, axios)
new Vue({
render: h => h(App)
}).$mount('#app')
还有html文件:
<div id="app">
<app></app>
</div>
我成功地在控制台上看到了正在打印的数据,但表格上没有显示任何内容。我在这里做错了什么?
【问题讨论】:
-
只需将
balances声明为data中的空数组:data: () => ({ balances: [] })。这将使其具有反应性,并且当它发生更改时(在您获取数据之后),模板将收到有关更改的通知。 -
非常感谢!我试过了,但余额出现未定义错误
-
您需要比“余额出现未定义错误” 更加具体。这可能意味着太多的事情。
-
我的意思是错误是余额未定义:未捕获(承诺中)ReferenceError:余额未定义
-
哦,问题是你在实例之外获取。您必须在安装组件后获取。如果您之前这样做,您可能会在组件安装之前得到响应,因此没有地方放置响应。当然,您可以保存它,然后将其放在
mounted()的组件上。然而,最常见的做法是将fetch()放在mounted()中。
标签: javascript vue.js vuetify.js