IT/development

[Vue.js] modal์ฐฝ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ์•ˆ๋  ๋•Œ

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2023. 8. 6.

๋ฌธ์ œ:

modal ํ‘œ์‹œ ์‹œ ajax๋กœ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€์ ธ์˜ค์ง€๋งŒ ๋ฐ”์ธ๋”ฉ์ด ๋˜์ง€ ์•Š์Œ

ํ™˜๊ฒฝ: thyemelaf ํŒŒ์ผ์— vue.js๋ฅผ ์ ์šฉ(๋ณ„๋„ node.js ํ™˜๊ฒฝ X)

thymeleafํŒŒ์ผ์— vue.js๋ฅผ ์ ์šฉํ•œ ๊ฒฝ์šฐ์— modal์ฐฝ์— ์•„๋ž˜์ฒ˜๋Ÿผ ๋ฐ”์ธ๋”ฉ์ด ์•ˆ๋œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.

์›์ธ์€ ๊ฐ„๋‹จํ–ˆ๋‹ค.

๊ธฐ์กด thyemelafํŒŒ์ผ์—์„œ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ „์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” div ์˜์—ญ ๋ฐ–์— ๋ชจ๋‹ฌ์ฐฝ div๊ฐ€ ์žˆ์—ˆ์Œ

๊ธฐ์กด์—๋Š” javascript/jQuery๋กœ ํŽ˜์ด์ง€ ๋กœ๋“œ ํ›„ DOM์— ์ง์ ‘ ์ ‘๊ทผํ•ด์„œ ์ž‘์—…ํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ์•ˆ๋˜์—ˆ์Œ

<!-- content -->
<div class="contents">
</div>

<!-- modal -->
<div class="popup" id="pop-info">
</div>

ํ•˜์ง€๋งŒ vue.js์—์„œ๋Š” root element์•ˆ์— ๋ชจ๋‹ฌ์˜์—ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด์•ผ vue.js์˜ ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐ๋˜์–ด

vue.js์˜ ๋ฐ”์ธ๋”ฉ ๊ธฐ๋Šฅ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(vue.js์—์„œ๋Š” DOM์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ์ผ์ด ๊ฑฐ์˜ ์—†์Œ)

<!-- content -->
<div class="contents" id="app">
	<!-- modal -->
	<div class="popup" id="pop-info">
	</div>
</div>
<script>
	new Vue({
		el: '#app',
    ...
})
</script>

์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ modal์˜์—ญ์„ root element์•ˆ์œผ๋กœ ํฌํ•จ ์‹œํ‚ค๊ณ  ์ •์ƒ์ ์œผ๋กœ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Œ

๋Œ“๊ธ€