반응형
bootstrap-vue 테이블이 데이터베이스 데이터로 채워지지 않음
bootstrap-vue 테이블을 데이터베이스의 데이터로 채우고 싶습니다.이를 위해 vuex를 사용하고 있지만 어떤 이유로 부트스트랩-vue 테이블이 데이터를 가져오지 않습니다.Vuex 개발 도구를 확인했습니다.
나는 덧붙였다.console.log('Getters: ' + this.$store.getters.allEmployees);
컴포넌트에는 Getters:만 콘솔에 출력됩니다.
이 문제를 더 해결하기 위해 하드코딩했습니다.[{"id":1,"name":"Jane Smith","email":"jane@smith.com","job_title":"Lead"},{"id":2,"name":"John Smith","email":"john@smith.com","job_title":"Installer"}]
에employees
이제 데이터가 테이블에 로드됩니다.
Vuex 모듈 직원js
const state = {
employees: [],
employeesStatus: null,
};
const getters = {
allEmployees: state => {
return state.employees;
},
};
const actions = {
fetchAllEmployees({commit, state}) {
commit('SET_EMPLOYEES_STATUS', 'loading');
axios.get('/api/employees')
.then(res => {
commit('SET_EMPLOYEES', res.data);
//console.log(state.employees);
commit('SET_EMPLOYEES_STATUS', 'success');
})
.catch(error => {
commit('SET_EMPLOYEES_STATUS', 'error');
});
},
};
const mutations = {
SET_EMPLOYEES(state, employees) {
state.employees = employees;
},
SET_EMPLOYEES_STATUS(state, status) {
state.employeesStatus = status;
}
};
export default {
state, getters, actions, mutations,
};
VueJS 컴포넌트 EmployeeDataTable.vue:
<template>
<div class="overflow-auto pb-3" style="background: white; ">
<b-card
header="Employees"
header-tag="header"
>
<b-pagination
v-model="currentPage"
:total-rows="rows"
:per-page="perPage"
aria-controls="my-table"
></b-pagination>
<p class="mt-3">Current Page: {{ currentPage }}</p>
<b-table
id="employee-table"
ref="employee-table"
:items="items"
:per-page="perPage"
:current-page="currentPage"
small
></b-table>
</b-card>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
export default {
name: "EmployeeDataTable",
data() {
return {
perPage: 3,
currentPage: 1,
items: [],
}
},
computed: {
...mapGetters(['allEmployees']),
rows() {
return this.items.length
}
},
methods: {
getEmployees() {
this.$store.dispatch('fetchAllEmployees').then(() => {
this.items = this.$store.getters.allEmployees;
console.log('Getters: ' + this.$store.getters.allEmployees); //<-Returns Getters:
});
//this.items = this.$store.getters.allEmployees;
}
},
mounted() {
this.getEmployees();
}
}
</script>
필의 설명이 적중했다.변경된 스니펫은 다음과 같습니다.
const actions = {
fetchAllEmployees({commit, state}) {
commit('SET_EMPLOYEES_STATUS', 'loading');
return axios.get('/api/employees')
.then(res => {
commit('SET_EMPLOYEES', res.data);
//console.log(state.employees);
commit('SET_EMPLOYEES_STATUS', 'success');
})
.catch(error => {
commit('SET_EMPLOYEES_STATUS', 'error');
});
},
};
그리고.
<b-table
id="employee-table"
ref="employee-table"
:items="allEmployees"
:per-page="perPage"
:current-page="currentPage"
small
></b-table>
언급URL : https://stackoverflow.com/questions/60823460/bootstrap-vue-table-doesnt-get-populated-with-my-database-data
반응형
'programing' 카테고리의 다른 글
Termux Android에서 MariaDB 서버 연결 (0) | 2023.01.13 |
---|---|
MariaDB에서 테이블에서 상위 10개의 행을 선택하려면 어떻게 해야 합니까? (0) | 2023.01.13 |
Maria에서 lower_case_table_names 변수 변경DB (0) | 2023.01.13 |
마리아DB 삽입 위치...선택...0 행에 영향을 주는 중복 키 업데이트 켜기 (0) | 2023.01.13 |
PyTorch가 GPU를 사용하고 있는지 어떻게 확인합니까? (0) | 2023.01.13 |