2022. 3. 19. 16:44ใProgramming Project ์์ ์ค/๋ด์ฉ ์ ๋ฆฌ
๐ง๐ป๐ป Git Hub ์ฃผ์
๐ ๋ชฉ์ฐจ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - Home / Main
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ชฉ๋ก ์กฐํ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ์์ธ ์กฐํ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ฑ๋ก / ์์
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ์ญ์
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ต๋ณ ๋ฑ๋ก / ์์
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ๊ฒ์ํ ๋ง๋ค๊ธฐ : ๋ต๋ณ ์ญ์
๐จ๐ฉ๐ง๐ฆ ํ์ ๊ด๋ จ
โ [FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - ํ์ ๊ด๋ จ : ํ์ ๊ฐ์
- ๋ถ ๋ก -
[FrontEnd][Vue-PJ] ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ ์๋น์ค - Paging ์ฒ๋ฆฌ
[Vue.js] ๊ธฐ์ด ๊ฐ๋ ์ ๋ฆฌ - Vue Router
๐ ๊ฒ์ํ ๋ง๋ค๊ธฐ - ์์ธ ์กฐํ
๐ฝ ํ๋ฉด
๐ฝ Source Code
<template>
<!-- ์ปจํ
์ธ ์์ญ -->
<div id="contentWrap">
<div id="topVisualWrap">
<div class="topVisual">
<p class="tit01">[JUNY COMPANY] ๊ฐ๋ฐ์ ์
๋ฌด ํ์
์๋น์ค ์ํ</p>
<p class="tit02">์ธ๊ณต์ง๋ฅ ํด๋ผ์ฐ๋ ์ฃผ๋ํ๋ ํ๋ซํผ <span></span></p>
</div> <!-- div class="topVisual" ๋ -->
</div> <!-- div id="contentWrap" ๋ -->
<!-- ์ปจํ
์ธ ์์ญ -->
<div id="Content">
<h2>
<span>๊ฐ๋ฐ์ง์</span>
<span @click="goList()"><b>Q&A</b></span>
</h2>
<div class="ListTbWrap mt-20">
<table class="tView">
<caption>Q&A ์์ธ๋ณด๊ธฐ</caption>
<colgroup>
<col>
<col style="width: 18%">
<col style="width: 15%">
</colgroup>
<thead>
<tr>
<th class="alignL bolder">{{devInquryData.inqrySj}}</th>
<th>
<span>
๋ฑ๋ก์ผ
<b>{{devInquryData.creatDt}}</b>
</span>
</th>
<th>
<span>
์ฒจ๋ถํ์ผ
<a href="#" class="link_down2" v-show="devInquryData.fileSn"></a>
<span v-show="!devInquryData.fileSn">-</span>
</span>
</th>
</tr>
</thead>
</table>
<div class="view_wrap">
{{devInquryData.inqryCn}}
</div> <!-- div class="view_wrap" ๋ -->
<template v-if="devInquryData.answerAt !== 'N'">
<div class="view_wrap" style="border-top: 1px solid black;">
<div style="margin-top:-30px; margin-left: -5px; front-weight: bold;">
[ ๋ต๋ณ ๋ด์ฉ ]
</div> <!-- div style="margin-top:-30px; margin-left: -5px; front-weight: bold;" ๋ -->
<br>
{{devInquryData.answerCn}}
</div> <!-- class="view_wrap" style="border-top: 1px solid black;" ๋ -->
</template> <!-- template v-if="devInquryData.answerAt !== 'N'" ๋ -->
<table class="tView2 mt-40">
<colgroup>
<col style="width: 12%">
<col>
</colgroup>
<tbody>
<tr>
<th>์ด์ ๊ธ</th>
<td>
<template v-if="devInquryData.beforeInqrySn !== -1">
<router-link to="/support/devInquryDetailView" @click="goDetailView(devInquryData.beforeInqrySn)">{{devInquryData.beforeInqrySj}}</router-link>
</template> <!-- template v-if="devInquryData.beforeInqrySn !== -1" ๋ -->
<template v-else>
์ด์ ๊ธ์ด ์์ต๋๋ค.
</template> <!-- template v-else ๋ -->
</td>
</tr>
<tr>
<th>๋ค์ ๊ธ</th>
<td>
<template v-if="devInquryData.nextInqrySn !== -1">
<router-link to="/support/devInquryDetailView" @click="goDetailView(devInquryData.nextInqrySn)">{{devInquryData.nextInqrySj}}</router-link>
</template> <!-- template v-if="devInquryData.nextInqurySn !== -1" ๋ -->
<template v-else>
๋ค์ ๊ธ์ด ์์ต๋๋ค.
</template> <!-- template v-else ๋ -->
</td>
</tr>
</tbody>
</table>
</div> <!-- div class="ListTbWrap mt-20" ๋ -->
<div class="btn_wrap">
<a href="#" class="btn04" @click="goList()">๋ชฉ ๋ก</a>
<template v-if="devInquryData.answerAt !== 'Y'">
<a href="#" class="btn03" @click="goRegist(devInquryData.inqrySn)">์ ์ </a>
</template> <!-- template v-if="devInquryData.answerAt != 'Y'" ๋ -->
<a href="#" class="btn03" @click="this.deletePopup = true">์ญ ์ </a>
</div> <!-- div class="btn_wrap" ๋ -->
</div> <!-- div id="Content" ๋ -->
</div> <!-- div id="topVisualWrap" ๋ -->
<!-- ๊ธ ์ญ์ ๊ด๋ จ Pop Up -->
<div class="card3_popup" style="display: block; top: 160px;" v-show="this.deletePopup">
<div class="popup_body">
<!-- Message -->
<div class="card_mody mt-20">
<p class="c_tit">ํด๋น ๊ฒ์๊ธ์ ์ญ์ ํ์๊ฒ ์ต๋๊น?</p>
</div> <!-- div class="card_mody mt-20" ๋ -->
</div> <!-- div class="popup_body" ๋ -->
<div class="btn_wrap_pop">
<button type="button" class="btn_m01_50" @click="doDelete()">ํ์ธ</button>
<button type="button" class="btn_m02_50" @click="this.deletePopup = false">์ทจ์</button>
</div> <!-- div class="btn_wrap_pop" ๋ -->
<div class="popup_close" @click="this.deletePopup = false">๋ซ๊ธฐ</div>
</div> <!-- div class="card3_popup" style="display: block; top: 160px;" v-show="this.deletePopup" ๋ -->
</template>
<script>
import {devInquryDetail, devInquryDelete } from "@/api/devInquryApi";
export default {
data() {
return {
searchParam: {
inqrySn: this.$route.query.inqrySn
}, // searchParams ๋
devInquryData : {},
deletePopup : false
}
}, // data() ๋
created() {
this.getDetailView();
}, // created() ๋
methods: {
getDetailView() {
devInquryDetail({
inqrySn: this.searchParam.inqrySn
}).then(response => {
console.log("Server์์ ์๋ต์ผ๋ก ๋ค์ด์จ Data์ ์์ธ ๋ณด๊ธฐ ์ ๋ณด๋ฅผ ์ถ๋ ฅ ํฉ๋๋ค(response.data.devInquryView) : ", response.data);
this.devInquryData = response.data.devInquryVO;
console.log("์๋ต์ผ๋ก ๋ค์ด์จ ๋ชจ๋ Data ๋ด์ฉ : " + this.devInquryData)
}).catch(error => {
console.log("Q&A ๊ฒ์ํ ์์ธ๋ณด๊ธฐ axios ์ฒ๋ฆฌ ์ค ๋ฌธ์ ๊ฐ ๋ฐ์ ํ์์ต๋๋ค.", error)
this.goList();
});
}, // getDetailView() ๋
goList() {
this.$router.push({
path: "/support/devInquryList",
});
}, // goList() ๋
goDetailView(inqrySn) {
this.$router.push({
path: "/support/devInquryDetailView",
query: {
inqrySn : inqrySn,
} // query ๋
});
}, // goDetailView() ๋
goRegist(inqrySn) {
this.$router.push({
path: "/support/devInquryRegist",
query: {
status : 'U',
inqrySn : inqrySn,
} // query ๋
});
}, // goRegist(inqurySn) ๋
doDelete() {
devInquryDelete({
inqrySn : this.searchParam.inqrySn
}).then(response => {
console.log("ํด๋น ํ๋ ๊ฒ์๋ฌผ์ด ์ญ์ ๋ฉ๋๋ค! ํด๋น ๊ฒ์๊ธ ์ ๋ณด๋ฅผ ์ถ๋ ฅ ํฉ๋๋ค! ", response.data);
// ์ญ์ ๊ฐ ์๋ฃ๋๋ฉด ๊ธ ๋ชฉ๋ก์ผ๋ก ๋ณด๋ธ๋ค.
this.goList();
}).catch(error => {
console.log("๊ฒ์๊ธ์ ์ญ์ ํ๋ ๋ ์ค ๋ฌธ์ ๊ฐ ๋ฐ์ ํ์์ต๋๋ค!" + error);
alert('Q&A ๊ฒ์๊ธ ์ญ์ ์ ์คํจํ์์ต๋๋ค! \r\n ๊ด๋ฆฌ์์๊ฒ ๋ฌธ์ ํ์ฌ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.')
});
} // doDelete() ๋
}, // methods ๋
} // export default ๋
</script>
<style lang="">
</style>
๐ฝ Code ๋ถ์
์์ Code๋ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ง๋ค์ด ์ค ๊ฒ์ด์์.
๋จผ์ Colgroup๋ฅผ ํตํด์ ๊ฒ์๊ธ ์ ๋ชฉ, ๋ฑ๋ก์ผ, ์ฒจ๋ถํ์ผ์ด ํ์๋ ๊ณต๊ฐ์ ๋จผ์ ์ก์ ์ค ๊ฒ์ด์์.
26๋ฒ์งธ ์ค์ ์ ๋ชฉ์ด ๋ค์ด๊ฐ ๋ถ๋ถ์ ๋ํ ํฐ ์ค๊ณฝ ์ค์ ์ ์ํด ์ก์ ์ค ๊ฒ์ด์์.
๊ทธ ๋ค์์ ์์ ๊ฐ์ด ํ์ ์ก์ ์ ๋ชฉ์ด ํ์ ๋๊ฒ ํด ์ค ๊ฒ์ด์์.
์ต์ด <thead>๋ฅผ ํตํด ํ ์๋จ์ ์ ๋ชฉ์ด ๋ค์ด๊ฐ ์ ์๋ ๋ถ๋ถ์ ๋ง๋ค์ด ์ค ๊ฒ์ด์์.
๊ทธ๋ฆฌ๊ณ , <tr>์ ํตํด ํ ๊ฐ์ ํ์ ์ก์์ฃผ๊ณ , <th> 3๊ฐ๋ฅผ ๋ง๋ค์ด ์ ๋ชฉ, ๋ฑ๋ก์ผ, ์ฒจ๋ถํ์ผ์ด ์ถ๋ ฅ ๋๋๋ก ํด ์ค ๊ฒ์ด์์.
34๋ฒ์งธ ์ค์ ๋จผ์ ์ดํด ๋ณผ ๊ฒ์ด์์. devInquryData์์ ๋ค์ด ์๋ InqrySj(์ ๋ชฉ)์ ์์ฑ ํ์์ผ๋ก ์ถ๋ ฅํ๊ฒ ๋ค๋ ์๋ฏธ์ธ ๊ฒ์ด์์.
devInquryData๋ data()์ ์ ์ธ์ด ๋์ด ์๋๋ฐ, ๊ฐ์ฒด(Object)๋ก ์ ์ธ์ด ๋์ด ์๋ ๊ฒ์ด์์.
๊ทธ๋ฌ๋ฉด ๋น ๊ฐ์ผํ ๋ฐ ์ด๋ป๊ฒ ๊ฐ์ ๊ฐ์ ธ์ค๋์ง์ ๋ํ ์๋ฌธ์ด ๋๋ ๊ฒ์ด์์.
๊ทธ๊ฒ์ ๋ต์ ๋ฐ๋ก Vue Life Cycle Hook์ Created()์ ์๋ ๊ฒ์ด์์.
์์ธ ๋ณด๊ธฐ Page๊ฐ Rendering์ด ๋ ๋, created() Hook์ด ๋์ํ๊ฒ ๋๋๋ฐ, ์ด ๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด GetDetailView() Method๊ฐ ํธ์ถ ๋๋ ๊ฒ์ด์์.
๊ทธ๋ผ ๋ฐ๋ก getDetailView()๋ฅผ ๋ง๋๋ฌ ๊ฐ ๋ณผ ๊ฒ์ด์์.
์ด Method๋ Back End์ ํต์ ์ ์ํํ์ฌ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ต ๊ฐ์ ์ฒ๋ฆฌํ๋๋ฐ ์ด์ฉ๋๋ Method์ธ ๊ฒ์ด์์.
์ต์ด ์ด ์น๊ตฌ๊ฐ ํธ์ถ์ด ๋๋ฉด DevInquryDetail()์ด ํธ์ถ์ด ๋๋๋ฐ, ๊ฐ์ฒด(Object) Type์ ๊ฒ์๋ฌผ ์ผ๋ จ๋ฒํธ(inqrySn)์ ์ ๋ฌ ํด ์ฃผ๋ ๊ฒ์ด์์. ์ด ๊ฐ์ searchParam์ ๋ค์ด ์๋๋ฐ,
์์ ๊ฐ์ด data()์ ๊ฐ์ฒด Type์ผ๋ก ์ ์๊ฐ ๋์ด ์๊ณ , router๋ฅผ ํตํด ํด๋น ๊ฐ์ ๋ฐ์ ์ค๋ ๊ฒ์ด์์.
์์ธ ์กฐํ๋ผ๋ ๊ฒ์ ๋ชฉ๋ก ์กฐํ์์ ํน์ ๊ฒ์๋ฌผ์ ์ ํ ํ์ ๋, ๊ทธ ๊ฒ์๋ฌผ์ ๋ํด ์์ธํ๊ฒ ๋ณผ ์ ์๋ ์๋น์ค ์ธ ๊ฒ์ด์์.
๊ฒฐ๊ตญ ํด๋น ๊ฐ์ ๋ชฉ๋ก ์กฐํ(DevInquryList.vue)์์ ์ ๋ฌ์ด ๋์๋๋ฐ, ์๋ goDetailView(inqurySn)์ด ๋ณด๋ด ์ค ๊ฒ์ด์์.
์ฌ๊ธฐ๋ฅผ ์ดํด๋ณด๋ฉด router๋ฅผ ์ด์ฉํด์ Push (์ ๋ฌ)์ ํ๋๋ฐ, ๋งค๊ฐ ๋ณ์๋ก path ์ฆ, ์์ธ ์กฐํ์ ์์น๋ฅผ ์ ๋ฌํ๊ฒ ๋๋ ๊ฒ์ด์์.
์์ ๊ฐ์ด query๋ฅผ ์ด์ฉํด์ ๊ฒ์๊ธ์ ์ผ๋ จ๋ฒํธ๋ฅผ ์ ๋ฌ ํด ์ฃผ๋ ๊ฒ์ด์์.
๋ค์ ์ด Method๋ก ๋์์์ ๋ถ์ ํด ๋ณด๋ฉด ๋ชฉ๋ก ์กฐํ์์ Router๋ฅผ ํตํด ์ ๋ฌ๋ ๊ฐ์ด ์์ searchParam์ ๊ฐ์ฒด ํํ๋ก ๋ด๊ธฐ๊ฒ ๋๊ณ , ์ฌ๊ธฐ์๋ ๊ทธ ๊ฐ์ ๋ค์ InqrySn์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ ์ํด ์ค ๊ฒ์ด์์.
๊ทธ๋ผ BackEnd์๋ ํด๋น ๊ฒ์๋ฌผ ์ผ๋ จ๋ฒํธ๊ฐ ์ ๋ฌ์ด ๋์์ ๊ฒ์ด๊ณ , BackEnd์ MyBatis๋ฅผ ํตํด DB์์ ํด๋น ๊ฒ์๊ธ์ ์ฐพ์ ๊ฒ์ด์์.
์์ SQL Code์์ ์ ์ฌํ ๋ด์ผ ํ ๋ถ๋ถ์ 73 ~ 75๋ฒ์งธ ์ค์ธ ๊ฒ์ด์์. ๊ฒ์๋ฌผ ์ผ๋ จ๋ฒํธ(inqrySn)์ด null์ด ์๋๊ณ , ๋น์ด์์ง ์๋ค๋ฉด and ์กฐ๊ฑด์ ์ ํตํด INQRY_SN์ด๋ผ๋ Column ๊ฐ ์ค์ Request๋ก ์ ๋ฌ ๋ ๊ฒ์๋ฌผ ์ผ๋ จ๋ฒํธ๊ฐ ์ผ์นํ์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ด์์.
์ฌ์ค ์์ and ์กฐ๊ฑด์ ์ Where ์ ์ ๋ฐ๋ก ์จ๋ ๋์ง๋ง, if๋ฌธ์ ํตํด ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด `Where 1=1`์ ํ๊ณ , and ์กฐ๊ฑด์ ์ ์ถ๊ฐ๋ก ์จ์ค ๊ฒ์ด์์.
์ฌ๊ธฐ์ ๊ฒ์๊ธ์ ์ฐพ์ผ๋ฉด Response๋ก Vue์ ๋ค์ ์ ๋ฌ์ด ๋ ๊ฒ์ด์์.
DevInquryList.vue - goDetailView(inqurySn) ๊ทธ๋ฆผ 168๋ฒ์งธ ์ค์ ๋ณด๋ฉด Back End๊ฐ ์ ๋ฌํด ์ค Data(Response - ๊ฒ์๊ธ ์์ธ ์ ๋ณด)๊ฐ `response`์ ๋ด๊ธฐ๊ฒ ๋๊ณ , 169๋ฒ์งธ ์ค์ ์ด๋ค ๊ฐ์ด ๋ค์ด ์๋์ง ํ์ธ์ ์ํด console์ ์ฐ์ด ๋ณด๋ ๊ฒ์ด์์.
๊ทธ๋ฐ ๋ค response์์ ์๋ data์์ ์๋ ๊ฒ์๊ธ ํ ๊ฐ์ ๊ฐ์ฒด(devInquryVO)๋ฅผ devInquryData ๊ฐ์ฒด์ ์ ์ฅ์ ํด ์ฃผ๋ ๊ฒ์ด์์.
๊ทธ๋ฐ ๋ค ๋ค์ devInquryData์ ์ด๋ค ๊ฐ์ด ๋ค์ด ์๋์ง ํ์ธ์ ํด์ฃผ๊ณ , ์ด Method๋ ์ญํ ์ด ๋๋๋ ๊ฒ์ด์์.
ํ์ง๋ง, Catch์ ์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์ด๋ค ์ด์ ๋ก error๊ฐ ๋ฐ์ํ๋์ง ์ถ๋ ฅํด์ฃผ๊ณ , ๋ชฉ๋ก ์กฐํ๋ก ๋๋ ค ๋ฒ๋ฆฌ๋ goList()๋ฅผ ํธ์ถํด ๋ฒ๋ฆฌ๋ ๊ฒ์ด์์.
๋ค์ ์ด ๊ณณ์ผ๋ก ๋์์์ ๊ฒฐ๊ตญ devInquryData๋ ์์ธ ์กฐํ๋ผ๋ Page๊ฐ Rendering์ด ๋ ๋, ์์ Logic์ ์ํด Back End๋ฅผ ํตํด ์ ๋ฌ ๋ฐ์ Data๋ฅผ ๊ฐ๊ณ ์๊ฒ ๋๊ณ , ๊ทธ Data์์๋ ํด๋น ๊ฒ์๊ธ ์ ๋ชฉ(InqrySj)๊ฐ ๋ค์ด ์๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ์ถ๋ ฅ์ ํ๋๋ก ๋ช ๋ นํ ์ ์๋ ๊ฒ์ด์์.
๋ํ, ๋์ผํ ์ด์ ์ Logic์ผ๋ก ๋ฑ๋ก์ผ๋ ์ถ๋ ฅ์ด ๋๋๋ก ํ ๊ฒ์ด์์.
๊ทธ๋ผ ์ด์ 44 ~ 45๋ฒ์งธ ์ค์ ์ดํด ๋ณด๋ฉด <a> Tag ๋ด์์ V-show (์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋๋ผ๋ Rendering์ ํ์ง๋ง, ์กฐ๊ฑด์ด ์ฐธ์ด ์๋๋ฉด ์ถ๋ ฅํ์ง๋ ์๋๋ค.)๋ฅผ ํตํด devInquryData์์ ํ์ผ ์ผ๋ จ๋ฒํธ(fileSn)์ด ๋ค์ด ์๋์ง ํ์ธ ํด ๋ณด๋ ๊ฒ์ด์์.
์๋ค๋ฉด ๊ตณ์ด ํ๋ฉด์ ๊ตณ์ด ๋ณด์ฌ์ค ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ธ ๊ฒ์ด์์.
๊ทธ๋ผ ํ์ผ์ด ์์ ๋ ์ด๋ค ๋ด์ฉ์ด ์ถ๋ ฅ์ด ๋ ๊น์?
45๋ฒ์งธ ์ค์ ๋ณด๋ฉด <span>์์์ v-show๊ฐ ๋ค์ ๋ฑ์ฅํ๊ณ , ์ฌ๊ธฐ์๋ devInquryData.fileSn์ด ์๋ค๋ฉด [ - ]๋ฅผ ๋ณด์ฌ๋ฌ๋ผ๊ณ ํ๊ณ ์๋ ๊ฒ์ด์์.
๊ทธ๋์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฒจ๋ถํ์ผ ๋ถ๋ถ์ด [ - ] ๊ฐ ํ์๋๊ณ ์๊ณ , ์ด๊ฑด ๊ฒฐ๊ตญ ์ฒจ๋ถ ํ์ผ์ด ์๋ค๋ ๊ฒ์ด์์.
์ด์ ๋ด์ฉ์ ์ถ๋ ฅํด์ผ ํ ๊ฒ์ด์์. ๋ด์ฉ์ ์ด ๊ณณ์์ ์ฒ๋ฆฌ๋ฅผ ํ๋๋ฐ, devInquryData์์ ๊ฒ์๊ธ ๋ด์ฉ(inquryCn)์ ์ถ๋ ฅํ๋๋ก ํ ๊ฒ์ด์์.
๊ทธ๋ผ ์ด๋ ๊ฒ ์์ ๊ฐ์ด ๋ด์ฉ์ด ์ถ๋ ฅ ๋๋ ๊ฒ์ด์์.
์ด๋ฒ์ ๋ต๊ธ์ ๋ํด ๋ถ์ ํด ๋ณด๋ ค๊ณ ํ๋ ๊ฒ์ด์์.
์ฌ๊ธฐ์๋ <template> ์์์ ์กฐ๊ฑด์ ์ ์ด์ฉํ๊ณ ์๋ ๊ฒ์ด์์. devInquryData ์์ ๋ต๋ณ ์ฌ๋ถ(answerAt)๊ฐ 'N'์ด ์๋๋ฉด ์ฆ, ๋ต๋ณ ์ฌ๋ถ๊ฐ ์ฐธ์ด๋ผ๋ฉด ํด๋น ๋ด์ฉ์ ์ถ๋ ฅํ๋ผ๋ ๊ฒ์ด์์. v-if๋ v-show์ ๋ค๋ฅด๊ฒ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ด๋ฉด Rendering ์์ฒด๋ ํ์ง ์๋๋ค๋ ์ฐจ์ด๊ฐ ์๋ ๊ฒ์ด์์.
๊ทธ๋ ๊ฒ ์กฐ๊ฑด์ ์ด ์ฐธ์ด๋๋ฉด 66๋ฒ์งธ ์ค์ devInquryData ์์ ๋ต๋ณ ๋ด์ฉ(answerCn)์ ์ถ๋ ฅํ๊ฒ ํด ์ค ๊ฒ์ด๋๋๋ค.
์ด๋ฒ์ ์ด ๋ถ๋ถ์ ๋ํด์ ์์ ๋ณผ ๊ฒ์ด์์.
๋ฑ ๋ณด๋ฉด ์๊ฒ ๋ฏ์ด ์ด์ ๊ธ๊ณผ, ๋ค์๊ธ๋ก ๋์ด๊ฐ ์ ์๋ ๋ถ๋ถ์ธ ๊ฒ์ด์์.
Tag์ ๋ํ ์ค๋ช ์ ๋ฏธ๋ค๋๊ณ , ์ค์ ์ ์ผ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง์ ๋ํด ํ์ธ์ ํด ๋ณด๋ฉด 81๋ฒ์งธ ์ค์ v-if๋ฅผ ํตํด devInqueryData ์์ ์ด์ ๊ฒ์๊ธ ์ผ๋ จ๋ฒํธ(beforInqrySn)๊ฐ -1์ด ์๋์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ด์์.
-1์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๊ณ , -100๋ ํด๋ ๋๊ณ , -9999๋ ์ ๊ณณ์ ๋ฃ์ด๋ ๋๋ ๊ฒ์ด๊ณ , 0์ ๋ฃ์ด๋ ๋๋ ๊ฒ์ด์์.
๊ฒฐ๊ตญ ์ด์ ๊ฒ์๊ธ ์ผ๋ จ๋ฒํธ๊ฐ ์๋์ง ์๋์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ด์์.
์ด์ ๊ฒ์๊ธ ๋ฒํธ๊ฐ devInquryData์์ ์๋ค๋ฉด router-link๋ฅผ ํตํด [ /support/devInquryDetailView ] URI๋ก ๋ณด๋ด๊ฒ ๋ ๊ฒ์ธ๋ฐ, ์ด ๋ถ๋ถ์ ํด๋ฆญํ๊ฒ ๋๋ฉด Click Event๊ฐ ๋ฐ์ํด์ goDetailView()์ devInquryData ์์ ์ด์ ๊ฒ์๊ธ ๋ฒํธ๋ฅผ ๋ฃ์ด ํธ์ถ ํ๋ ๊ฒ์ด์์.
์ด Method๊ฐ ์ด์ ๊ฒ์๊ธ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ๋์์ ํ๊ฒ ๋๋ฉด router๋ฅผ ํตํด ์๊ธฐ ์์ ์ URI ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ , ๋งค๊ฐ ๋ณ์๋ก ๋ค์ด์จ ์ด์ ๊ฒ์๊ธ ์ผ๋ จ๋ฒํธ๋ฅผ ์ ๋ฌํด์ ์ด์ ๊ฒ์๊ธ ๋ด์ฉ์ด ์ถ๋ ฅ ๋๋๋ก ํด ์ฃผ๋ ๊ฒ์ด์์.
๋ค์ ์์ ๋ด์ฉ์ผ๋ก ๋์์ค๋ฉด ๊ฒฐ๊ตญ ์ด์ ๊ฒ์๊ธ ์ผ๋ จ๋ฒํธ๋ก Page๊ฐ ์ด๋์ด ๋์๊ณ , ๋ค์ ๊ทธ ์ด์ ์ ๊ฒ์๊ธ ์ ๋ชฉ์ ์ถ๋ ฅํด ์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ `devInquryData.beforInqrySj(์ด์ ๊ฒ์๊ธ ์ ๋ชฉ)`์ ์ถ๋ ฅํ๋๋ก ํด ์ค ๊ฒ์ด์์.
๊ทธ๋ฆฌ๊ณ , 87๋ฒ์งธ ์ค์ v-else๋ฅผ ํตํด ์ด์ ๊ฒ์๊ธ ๋ฒํธ๊ฐ -1๊ณผ ๊ฐ๋ค๋ฉด ์ฆ, ์ด ์ ๊ฒ์๊ธ์ด ์๋ค๋ฉด '์ด์ ๊ธ์ด ์์ต๋๋ค.'๋ฅผ ์ถ๋ ฅํด ์ฃผ๋๋ก ํด ์ค ๊ฒ์ด์์.
์์ ๋ด์ฉ์ ๋ค์ ๊ธ๋ก ์ด๋ํ ์ ์๋ Logic์ด๊ณ , ์์ ์ด์ ๊ธ๊ณผ์ ์ฐจ์ด๋ ์ด์ ๊ฒ์๊ธ ์ผ๋ จ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์๋ ๋ค์ ๊ฒ์๊ธ ์ผ๋ จ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ Logic์ ์ํํ๋ค๋ ์ฐจ์ด๋ง ์๋ ๊ฒ์ด์์.
์ด๋ฒ์ ์์ ๊ฐ์ ๋ฒํผ์ ๋ํด ์์ ๋ณผ ๊ฒ์ด์์.
์์ ๊ณผ ์ญ์ ๋ ๋ฐ๋ก ์์ฑํ์ฌ ์ ๋ฆฌ ํ๋๋ก ํ ๊ฒ์ด๊ณ , ์ด ๊ณณ์์๋ ๋ชฉ๋ก๋ง ์ ๋ฆฌ ํ๋๋ก ํ ๊ฒ์ด์์.
์ด ๊ณณ์์ ์ค์ ์ ์ผ๋ก ๋ณผ ๋ถ๋ถ์ 113๋ฒ์งธ ์ค์ธ ๊ฒ์ด์์. '๋ชฉ๋ก'์ด๋ผ๋ ๋ฒํผ์ ์ฌ์ค <a> Tag๋ก ๋ง๋ค์ด์ง Link์ธ ๊ฒ์ด๊ณ , click์ด๋ผ๋ Event๊ฐ ๋ฐ์ํ๋ฉด goList()๋ฅผ ํธ์ถํ๋ ๊ฒ์ด์์.
์ด ์น๊ตฌ๋ ๋จ์ํ router๋ฅผ ์ด์ฉํด์ devInquryList ์ฆ, ๋ชฉ๋ก ์กฐํ Page๊ฐ Rendering๋๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ด์์.
๊ทธ๋ ๊ฒ ๋๋ฉด ๋ชฉ๋ก ์กฐํ Page๋ก ์ด๋ํ ํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ ๊ฒ์ด์์.