IT/development

[Vue.js] ์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ this ์‚ฌ์šฉ ์‹œ ์œ ์˜์ 

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

โ€ป ์ผ๋ฐ˜์ ์œผ๋กœ javascript์—์„œ this๋Š” ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด

ex)๋ทฐ ์ธ์Šคํ„ด์Šค์˜ methods ๊ฐ์ฒด์˜ ํ•จ์ˆ˜ ๋‚ด ์ฝœ๋ฐฑํ•จ์ˆ˜์—์„œ ์ธ์Šคํ„ด์Šค์˜ data ๊ฐ์ฒด ๊ฐ’์„ ์„ธํŒ…ํ•˜๋Š” ๋กœ์ง

Vue ์ธ์Šคํ„ด์Šค

new Vue({
       //element id
       el: '#project-client-req',
       //vue์—์„œ ๊ด€๋ฆฌํ•  ๋ฐ์ดํ„ฐ
       data: {
           client: {
                   clientBizNo: '',     //์‚ฌ์—…์ž๋“ฑ๋ก๋ฒˆํ˜ธ
                   clientNm: '',        //์ƒํ˜ธ
                   clientZipNo: '',     //์šฐํŽธ๋ฒˆํ˜ธ(์ฃผ์†Œ๊ฒ€์ƒ‰ API๋กœ ์„ธํŒ…)
                   clientBasAddr: '',   //๊ธฐ๋ณธ์ฃผ์†Œ(์ฃผ์†Œ๊ฒ€์ƒ‰ API๋กœ ์„ธํŒ…)
                   clientDtlAddr: ''    //์ƒ์„ธ์ฃผ์†Œ
                 }
       },
       methods: {
           //์ฃผ์†Œ ๊ฒ€์ƒ‰
           searchAddr() {

               let addr = '';       // ์ฃผ์†Œ ๋ณ€์ˆ˜
               let zipCode = 0;    //์šฐํŽธ๋ฒˆํ˜ธ ๋ณ€์ˆ˜

               new daum.Postcode({
               		oncomplete: function(data) {
               		//์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ฃผ์†Œ ํƒ€์ž…์— ๋”ฐ๋ผ ํ•ด๋‹น ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.
               		if (data.userSelectedType === 'R') { // ์‚ฌ์šฉ์ž๊ฐ€ ๋„๋กœ๋ช… ์ฃผ์†Œ๋ฅผ ์„ ํƒํ–ˆ์„ ๊ฒฝ์šฐ
               			addr = data.roadAddress;
               		} else { // ์‚ฌ์šฉ์ž๊ฐ€ ์ง€๋ฒˆ ์ฃผ์†Œ๋ฅผ ์„ ํƒํ–ˆ์„ ๊ฒฝ์šฐ(J)
               			addr = data.jibunAddress;
               		}   
               		  // vue.js ์ธ์Šคํ„ด์Šค์˜ data ๊ฐ์ฒด์˜ ์šฐํŽธ๋ฒˆํ˜ธ์™€ ๊ธฐ๋ณธ์ฃผ์†Œ ์„ธํŒ…
                    this.client.clientZipNo = data.zonecode;
                    this.client.clientBasAddr = addr;
               		}
               	}).open();
           },
      },
    });

๊ฒฐ๊ณผ

์ธ์Šคํ„ด์Šค์˜ data๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•จ

์ฐธ์กฐ๋ณ€์ˆ˜๋กœ ํ•ด๊ฒฐ

๊ฒฐ๊ณผ

์ •์ƒ์ ์œผ๋กœ vue ์ธ์Šคํ„ด์Šค์˜ data๊ฐ์ฒด์— ๊ฐ’ ์„ธํŒ…๋จ

๋Œ“๊ธ€