개발툴/Vue
Vue Instance - method, filter, computed, watch
가든_
2022. 11. 13. 21:16
Vue method
- data 및 method의 정의 가능
- method안에서 data를 “this.데이터 이름”으로 접근 가능
<div id="app">
<div>data : {{message}}</div>
<div>method kor : {{helloKor()}}</div>
<div>method eng : {{helloEng()}}</div>
</div>
<script>
new Vue({
el:"#app"
data:{
message:"안녕하세요", name:"garden"
},
methods:{
helloKor(){
return "안녕" + this.name
},
helloEng(){
return "Hello" + this.name
}
}
})
</script>
Vue filter
- 화면에 표시되는 텍스트 형식을 변환해주는 기능
- 표현식에 새로운 결과 형식 적용 가능
- 중괄호 보간법[{{ }}] 또는 v-bind 속성에서 사용 가능
- 중괄호 보간법 : {{데이터|필터 이름|필터 이름|필터 이름…}}
- v-bind : <div v-bind:id="rawId | formatId"></div>
전역 필터 & 지역 필터
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vue.js</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div>
<input type="text" v-model="msg" />
</div>
<div>
<h2>결과 :</h2>
<h3>{{ msg | count1 }}</h3>
<h3>{{ msg | count2('문자를 넣어보세요') }}</h3>
</div>
</div>
<script>
//전역 필터
Vue.filter("count1", (val) => {
if (val.length == 0) {
return;
}
return `${val} : ${val.length}자`;
});
new Vue({
el: "#app",
data: {
msg: "",
},
filters: {
//지역 필터
//val : msg
//alternative : '문자를 넣어보세요'
count2(val, alternative) {
if (val.length == 0) {
return alternative;
}
return `${val} : ${val.length}자`;
},
},
});
</script>
</body>
</html>
Vue computed
- 데이터 변경사항을 실시간으로 처리
- 캐싱을 이용해서 데이터 변경이 없을 경우 캐싱된 데이터 반환 >> 값
- Setter Getter를 직접 지정할 수 있다
- 작성은 method 같이 하지만 Vue에서 proxy처리해서 프로퍼티처럼 사용가능하다
<body>
<div id="app">
<input type="text" v-model="message" />
<p>원본 메시지: "{{ message }}"</p>
<p>역순으로 표시한 메시지1: "{{ reversedMsg }}"</p>
<p>역순으로 표시한 메시지2: "{{ reversedMsg }}"</p>
<p>역순으로 표시한 메시지3: "{{ reversedMsg }}"</p>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
message: "안녕하세요 싸피여러분",
},
//종속적인 데이터(message)가 바뀌었을 때만 호출된다.
computed: {
reversedMsg: function () {
console.log("꺼꾸로 찍기");
return this.message.split("").reverse().join("");
},
},
});
</script>
</body>

⇒ 데이터가 1번 변했기 때문에 1번 실행되었다.
Vue Watch
- computed는 종속된 data가 변경되었을 경우 그 data를 다시 계산해서 캐싱 한다
- 보고 있던 값을 바꿈
- watch는 data가 변경되었을 경우 다른 data를 (변경하는) 작업을 한다
- 보고 있던 값이 바뀌면 하기로 했던 일을 함
<body>
<div id="app">
<div>
<input type="text" v-model="a" />
</div>
</div>
<script>
var vm = new Vue({
el: "#app",
data: {
a: 1,
},
//watch : a를 감시해라!
//감시하고 있다가 변화가 생기면
//val : 바뀐 값 oldVal : 이전 값에 넣기
//콘솔에 찍기
//디버깅할때 주로 사용
watch: {
a: function (val, oldVal) {
console.log("new: %s, old: %s", val, oldVal);
},
},
});
console.log(vm.a);
vm.a = 2; // => new: 2, old: 1
console.log(vm.a);
</script>
</body>
computed와 watch — Vue.js
Vue.js - The Progressive JavaScript Framework
ssafy-vue.xyz