view단 작업을 하던도중 radio버튼을 클릭했을 때 값이 변경된 후 다음로직이 수행되는 부분을 구현해야 했는데,
처음에는 @click(v-on:click)이벤트를 이용해서 작업하다보니 내 생각과는 다르게 작동했다.
의도했던것은 @click가 눌렸을 때 해당 태그의 값이 변경되고, function이 실행될 것 같았는데, 막상 실행해보니 click이벤트가 발생한 뒤 값이 변경되었는데, 이 부분을 코드로 보면 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
<div id="view-point">
// <input type="radio" name="radio" v-model="val" @click="func"> 값이 변경된 후 함수가 실행되게 하고싶으면 @change를 사용...
<input type="radio" name="radio" v-model="val" @change="func">
</div>
//스크립트 최대한 간략화함...
<script>
let vm = new Vue({
el : '#view-point',
data : {
val : null,
}
methods : {
init : function() {
//생략
},
func : function() {
// val값을 변경해주고,
// 이후 프로세스를 실행시키는 함수
}
},
mounted: function(){
this.$nextTick(function () {
this.init();
})
}
});
</script>
|
cs |
위와 같이 작성해서 실행했을 때 click이벤트가 발생하면 func함수는 v-model의 val값이 바뀌기 전에 실행되어버려 의도된대로 실행되지 않았다. 따라서 @click 부분을 @change로 바꿔서 실행해보니 의도된대로 잘 실행되었고,
이게 무슨차이가 있는지 궁금해서 찾아보니 stack overflow에 설명되있기로는 @change는 값이 변하는걸 감지한 이후에 실행되고 @click은 바로 함수가 실행된다는 것이였는데, 글을 읽고 곰곰히 생각해보니 단어 뜻을 생각해보면 당연히 change는 변화감지, click은 클릭감지인데 당연한걸 모르고 사용했다는게 좀 바보같다는 생각이 들었다.
다음부터는 잘 생각해서 사용해야겠다는 생각이 들었다.
'JAVASCRIPT' 카테고리의 다른 글
vue js event가 발생한 객체 value값 가져오기 (0) | 2021.07.28 |
---|---|
javascript Object 자료형의 값을 비교하는 방법 (0) | 2021.05.07 |
[Jquery ]를 이용해서 열에있는 모든 라디오버튼 일괄체크 구현 (0) | 2021.04.09 |
티스토리 블로그에 로또번호 추출기 만들기 (0) | 2021.02.16 |
javascript의 동적인 Key 가진 Object(map) 만들기 (0) | 2020.11.23 |