본문 바로가기
Tech/Vue.js

[Vue.js] 조건문, 반복문, 객체 데이터 추출

by 소라소라잉 2020. 7. 22.

조건문

 

: v-if, v-else-if, v-else로 작성한다. v-if 조건에 해당하는 태그만 렌더링된다. 

 

app.html 

    <div id="oddneven">
        <input type="text" v-model="number"/>
        <p v-if="number==''">값을 입력해 주세요.</p>
        <p v-else-if="number==0">1이상의 숫자를 입력해 주세요.</p>
        <p v-else-if="number%2==0">짝수입니다.</p>
        <p v-else>홀수입니다.</p>
    </div>

 

app.js

    let app = new Vue({
        el : '#oddneven',
        data : {
            number : ''
        }
    })

 

결과화면 

 

공백인경우, 0인경우, 짝수인경우를 분기하여 렌더링되도록 했다. 

 

 

반복문

 

: v-for를 이용하여 배열의 각 원소들에 접근한다. 

 

app.html 

    <div id="app1">
        <input type="radio" value="짝수" v-model="oddneven">짝수만 보기
        <input type="radio" value="홀수" v-model="oddneven">홀수만 보기

        <p>{{oddneven}}만 보여용!</p>
        <ul v-if="oddneven=='짝수'">
            <li v-for="num in numbers" v-if="num%2==0" v-text="num"></li>
        </ul>
        <ul v-else>
            <li v-for="num in numbers" v-if="num%2!=0" v-text="num"> </li>
        </ul>
    </div>

 

app.js

    let app1 = new Vue({
        el: '#app1',
        data: { 
            oddneven : '짝수'
            , numbers :  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        }
    });

 

결과 화면 

data로 짝수, 홀수 여부를 나타내는 oddneven, 숫자 배열인 numbers를 넘기면, v-if에 의해 oddneven의 값을 확인하고 조건부 렌더링을 진행한다.  

 

아래처럼 메서드를 이용해 좀더 쉽고 편리하게 렌더링 할 수 있는 방법도 있다. (이후 포스팅) 

 

app.html 

    <div id="app1">
        <input type="radio" value="짝수" v-model="oddneven">짝수만 보기
        <input type="radio" value="홀수" v-model="oddneven">홀수만 보기
        <p>{{oddneven}}만 보여용!</p>

        <ul>
            <li v-for="num in filtered">
                <p v-text="num"></p>
            </li>

        </ul>
    </div>

 

app.js

 let app1 = new Vue({
            el: '#app1',
            data: {
                oddneven: '짝수',
                numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
            },
            computed: {
                filtered: function () {
                    let ooe = this.oddneven;
                    result = this.numbers.filter((value, index) => {
                        return ooe == '짝수' ? value % 2 == 0 : value % 2 != 0;
                    })
                }
            }
        });

 

 

객체 데이터 추출

 

: 원본 데이터가 객체인경우 객체를 호출하여 items.name 같은 식으로 내부 데이터를 꺼내 올 수도 있고 key-value 형식으로 된 데이터 또한 추출할 수 있다. 

 

app.html 

    <div id="app3">
        <select id="occupation">
            <option disabled="disabled" selected>직업을 선택해 주세요.</option>
            <option v-for="(val, key) in occupation" v-bind:value="key" v-text="val"></option>  
        </select>
    </div>

 

app.js 

    let occuList = {
        1 : 'Chef',
        2 : 'Architect',
        3 : 'Banker',
        4 : 'Software Engineer',
        5 : 'Chemist',
        6 : 'Finance Manager'
    }

    let app = new Vue({
        el : '#app3',
        data : {
            occupation : occuList
        }
    })

 

결과화면

v-for="(val, key) in occupation" v-bind:value="key" v-text"val"

객체를 호출하여 key,value를 가져온다. 한가지 주의할 점은 key-value순이 아니라 value, key순이며 (val, key, index)를 이용해 index를 가져올 수도 있다. 

'Tech > Vue.js' 카테고리의 다른 글

[Vue.js] 컴포넌트 기초  (0) 2020.07.29
[Vue.js] 이벤트 핸들링  (0) 2020.07.28
[Vue.js] Vue 인스턴스 생성. 데이터 입력과 출력  (0) 2020.07.19

댓글