Template 2 (템플릿)

앞서 살펴봤던 바인딩 이외에도 여러가지 Template 기법을 사용할 수 있습니다.

<div id="app" v-once>
    <a href="#" v-if="flag">Vue.Js</a>
    <ul>
        <li v-for="system in systems">{{ system }}</li>
    </ul>
    <p v-show="flag">Vue.Js</p>
    <h5 v-bind:id="uid">뷰 ID</h5>
    <button v-on:click="popupAlert(10)">Alert</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.15/dist/vue.min.js"></script>
<script>
    new Vue({
        el : '#app',
        data : {
            flag : false,
            systems : ['android','ios','window'],
            uid : 10,
            message : 'Hello Vue Js!'
        },
        methods : {
            popupAlert : function (num) {
                return alert('경고 창 표시' + num);
            }
        },
        computed : {
            reversedMessage : function () {
                return this.message.split('').reverse().join();
            }
        }
    })
    Vue.config.devtools = true;
</script>
  • v-if – 지정한 뷰의 데이터 값의 참 거짓 여부에 따라 요소를 표시하거나 숨김 처리
  • v-for – 데이터의 갯수만큼 요소를 반복 출력
  • v-show – v-if와 같은 기능을 하지만 요소를 완전히 없애지는 않고 display:none 처리
  • v-bind – HTML 태그의 기본속성과 뷰 데이터 속성을 연결
  • v-on:click – 이벤트를 처리. 매개변수 전달 가능
  • v-model – 폼에 주로 사용되며, 폼에 입력한 값을 뷰 Instance의 데이터와 즉시 동기화

추가로 Instance 내에서 computed 속성을 사용하면 복잡한 연산을 사용할 수 있습니다.
method 속성은 호출할 때만 로직이 수행되지만 , computed 속성은 데이터의 값이 변경되면 자동으로 수행됩니다.