我正在使用vueJs MDB-datatable来显示来自我的API的数据。 在处理“ OtherJSON结构”时,我遵循了MDB可发布的文档,但是它没有重新呈现API请求中的数据。
我尝试了不同的回调,包括beforeCreate,create,beforeMount和mount,这些数据已更改,但仍然无法呈现最新数据。
代码如下:
<template>
<mdb-datatable
:data="tableData"
striped
bordered
/>
</template>
<script>
import 'mdbvue/build/css/mdb.css';
import { mdbDatatable } from 'mdbvue';
export default {
components: {
mdbDatatable
},
data: () => ({
tableData: {
columns: [],
rows: []
}
}),
created() {
fetch('https://jsonplaceholder.typicode.com/users')
.then(res => res.json())
.then(json => {
let keys = ["id", "name", "username"];
let entries = this.filterData(json, keys);
//columns
this.tableData.columns = keys.map(key => {
return {
label: key.toUpperCase(),
field: key,
sort: 'asc'
};
});
console.log(this.tableData.columns);
//rows
entries.map(entry => this.tableData.rows.push(entry));
console.log(this.tableData.rows);
})
.catch(err => console.log(err))
},
methods: {
filterData(dataArr, keys) {
let data = dataArr.map(entry => {
let filteredEntry = {};
keys.forEach(key => {
if(key in entry) {
filteredEntry[key] = entry[key];
}
})
return filteredEntry;
})
return data;
}
}
</script>
MDB数据表文档似乎很简单,但是我不知道缺少哪一部分。
我是VueJS的新手。非常感谢您的帮助。
答案 0 :(得分:0)
似乎当前版本的MDB Vue(5.5.0)引用了rows
和columns
数组,并在这些数组发生突变时做出反应,而不是对绑定到的属性的更改做出反应data
道具本身。
我看到您已经在突变而不是替换rows
数组,因此您需要对columns
数组进行相同的操作。
//columns
this.tableData.columns.push(...keys.map(key => {
return {
label: key.toUpperCase(),
field: key,
sort: 'asc'
};
}));