new Vue({
el: '#app', // Vue가 실행될 DOM요소, Vue 인스턴스에 연결할 HTML 요소
template: '',
data: {}, // Vue가 관찰하는 data 객체를 지정, 변경 사항을 즉시 감지
props: [], // {}. 부모 컴포넌트로부터 전달받은 property들의 Array 혹은 Object
methods: {}, // 화면 로직 제어와 관련된 함수를 정의하고 계산된 값을 리턴.
computed: {}, // method와 유사하나 캐시를 사용.
watch: {} // 지정된 변수를 지켜보다 값이 변경되었을 때 정의된 함수 실행. 주로 비동기처리에 사용
});
<div id="app">
<div>method eng : {{helloEng()}}</div> <!-- Hello dona!-->
<div>method kor : {{helloKor()}}</div> <!-- 안녕 (undefinded(미출력)) -->
</div>
new Vue({
el: '#app',
data: {
name : '도나',
},
methods: {
helloEng : function() {
return 'Hello ' + this.name;
},
helloKor : () => {
return '안녕 ' + this.name;
},
},
});
화살표 함수 사용 지양 주의!
화살표 함수는 부모 컨텍스트에 바인딩되기 때문에, 의도와 달리 Window객체에 바인딩 될 수 있다
<h3>{{ msg | count1 }}</h3>
<h3>{{ msg | count2('문자를 넣어보세요') }}</h3>
Vue.filter('count1', (val) => {
if (val.length == 0) {
return;
}
return `${val} : ${val.length}자`;
});
new Vue({
el: '#app',
data: {
msg: '',
},
filters: {
count2(val, alternative) {
if (val.length == 0) {
return alternative;
}
return `${val} : ${val.length}자`;
},
},
});
<div id="app">
<div>
<input type="text" v-model="a" />
</div>
</div>
var vm = new Vue({
el: '#app',
data: {
a: 1,
},
watch: {
a: function (val, oldVal) {
console.log('new: %s, old: %s', val, oldVal);
},
},
});