성장과정(dev)/Frontend(feat. Vue, Next.js)
b-table list 화면에서 상세화면 넘어가기 (parameter 넘기기)
lowellSunny
2021. 2. 16. 13:28
column에 goDetail을추가
list.vue
<b-table
class="w-100 mx-auto"
:striped="false"
:bordered="true"
:small="true"
:hover="true"
:items="items"
:fields="fields"
:sort-by.sync="sortBy"
:sort-desc.sync="sortDesc"
:busy="isBusy"
:filter="filter"
:borderless="false"
:outlined="false"
:dark="false"
:fixed="false"
:no-border-collapse="noCollapse"
@filtered="onFiltered"
:head-variant="headVariant"
:table-variant="tableVariant"
:current-page="currentPage"
:per-page="perPage"
>
<template #cell(go_detail)="data" >
<router-link :to="{ name: 'submission-detail', params: {id: data.item.submission_id, email: data.item.email}}">
<b-icon style="cursor: pointer;" icon="arrow-right-square" variant="primary"></b-icon>
</router-link>
<!--
<b-button size="sm" @click="info(row.item, row.index, $event.target)" class="mr-1">
Info modal
</b-button>
-->
</template>
</b-table>
detail.vue
async mounted() {
//this.$route.params $route를 이용해서 데이터를 뽑아냄
let params =
"?id=" + this.$route.params.id +
"&email=" + this.$route.params.email;
....
}
router.js
...
{
path: '/raw/detail',
name: 'submission-detail',
component: SubmissionDetail,
props: true
},
...
*** row 클릭 시 넘어가게 적용하기 ***
1. 클릭 시 발생하는 이벤트 추가 (html)
<b-table
class="w-100 mx-auto"
:striped="false"
:bordered="true"
:small="true"
:hover="true"
:items="items"
:fields="fields"
:sort-by.sync="sortBy"
:sort-desc.sync="sortDesc"
:busy="isBusy"
:filter="filter"
:borderless="false"
:outlined="false"
:dark="false"
:fixed="false"
:no-border-collapse="noCollapse"
@filtered="onFiltered"
:head-variant="headVariant"
:table-variant="tableVariant"
:current-page="currentPage"
:per-page="perPage"
@row-clicked="goDetail">
</b-table>
2. b-table 옵션에 row-clicked 이벤트 걸어주기(script)
...
methods: {
goDetail( item ) {
this.$router.push({ name: 'submission-detail', params: {id: item.submission_id, email: item.email}});
},
...
}