xxxxxxxxxx
1
<template>
2
<mdb-container>
3
<mdb-datatable-2
4
v-model="data"
5
striped
6
bordered
7
arrows
8
:display="3"
9
/>
10
</mdb-container>
11
</template>
xxxxxxxxxx
1
<style>
2
h3 {
3
font-weight: normal;
4
padding-top: 20px;
5
padding-bottom: 30px;
6
}
7
p {
8
color: #969696;
9
margin-bottom: 0;
10
font-size: 14px;
11
}
12
</style>
xxxxxxxxxx
1
<script>
2
import { mdbDatatable2, mdbContainer } from 'mdbvue';
3
export default {
4
components: {
5
mdbDatatable2,
6
mdbContainer
7
},
8
data() {
9
return {
10
columns: [],
11
rows: []
12
};
13
},
14
computed: {
15
data() {
16
return {
17
columns: this.columns,
18
rows: this.rows
19
};
20
},
21
},
22
methods: {
23
filterData(dataArr, keys) {
24
let data = dataArr.map(entry => {
25
let filteredEntry = {};
26
keys.forEach(key => {
27
if (key in entry) {
28
filteredEntry[key] = entry[key];
29
}
30
});
31
return filteredEntry;
32
});
33
return data;
34
}
35
},
36
mounted(){
37
fetch('https://jsonplaceholder.typicode.com/todos')
38
.then(res => res.json())
39
.then(json => {
40
let keys = ["id", "title", "completed"];
41
let entries = this.filterData(json, keys);
42
//columns
43
this.columns = keys.map(key => {
44
return {
45
label: key.toUpperCase(),
46
field: key,
47
sort: true
48
};
49
});
50
//rows
51
entries.map(entry => this.rows.push(entry));
52
})
53
.catch(err => console.log(err));
54
}
55
};
56
</script>
Console errors: 0