IT/HTML|Script|PHP

[Vue] vue.js 문법

하요 2022. 3. 25. 15:25
반응형

1. 데이터 바인딩의 가장 기본적인 형태는 이중괄호{{  }}를 사용

<div id="app">{{ msg }}</div>

<script>
var vm = new Vue({
  el: '#app',
  data: {
    msg: 'Hello world'
  }
});
</script>

 

2. v- 접두사 사용

 : 렌더링 된 DOM에 특수한 반응형 동작을 주기위해 사용

        ex) v-on v-model v-for v-if c-cloak ... 

 <form v-on:submit.prevent="onSubmit">

 // .prevent 수식어는 트리거된 이벤트에서 event.preventDefault()를 호출하도록
 // v-on 디렉티브에게 알려줍니다.

 </form>
<style>
[v-cloak] {display : none;}
</style>

<div id="example" v-cloak>
...
</div>
<div id="app-2">
  <span v-bind:title="message">
    이 문구에 마우스를 올리면 동적으로 바인딩 된 title을 볼 수 있습니다!
  </span>
</div>
var app2 = new Vue({
  el: '#app-2',
  data: {
    message: '이 페이지는 ' + new Date() + ' 에 로드 되었습니다'
  }
})

 

3. 조건문

<div id="app-3">
  <p v-if="seen">이제 나를 볼 수 있어요</p>
</div>
var app3 = new Vue({
  el: '#app-3',
  data: {
    seen: true
  }
})

 app3.seen = false로 셋팅시 문구가 사라지는 효과를 볼 수 있음.

 

4. 반복문

<div id="app-4">
  <ol>
    <li v-for="todo in todos">
      {{ todo.text }}
    </li>
  </ol>
</div>
var app4 = new Vue({
  el: '#app-4',
  data: {
    todos: [
      { text: 'Vue.js 첫번째문장' },
      { text: '두번째 문장' },
      { text: '마지막 문장 노출' }
    ]
  }
})

app4.todos.push({ text: 'New item' })를 통하면 Todo에 새항목이 동적의 추가 되는 것을 확인 가능하다.

5. watch 와 computed

 : 하나의 데이터를 기반으로 다른 데이터를 변경할 필요가 있을 때 사용하며, 주로 긴 처리 시간이 필요한 비동기 처리에 적합하다.

 

watch ex.

<div id="example">
    x : <input type='text' v-model="x" /><br />
    y : <input type='text' v-model="y" /><br />
    덧셈 결과 : {{sum}}
</div>
<script type="text/javascript">
var vm = new Vue({
    el : "#example",
    data : { x:0, y:0, sum:0 },
    watch : {
        x : function(v) {
            console.log('## x 변경')
            var result = Number(v) + Number(this.y);
            if (isNaN(result)) this.sum = 0;
            else this.sum = result;
        },
        y : function(v) {
            console.log('## y 변경')
            var result = Number(this.x) + Number(v);
            if (isNaN(result)) this.sum = 0;
            else this.sum = result;
        }
    }
})
</script>

computed ex.

<div id="example">
    x : <input type='text' v-model="x" /><br />
    y : <input type='text' v-model="y" /><br />
    덧셈 결과 : {{sum}}
</div>
<script type="text/javascript">
var vm = new Vue({
    el : "#example",
    data : { x:0, y:0 },

    computed : {
        sum : function() {
            var result = Number(this.x) + Number(this.y);
            if (isNaN(result)) return  0;
            else return result;
        }
    }
})
</script>

 

 

 

반응형