Shop.vue_20211222

gegus1220·2021년 12월 22일
0

vue

목록 보기
35/35
<template>
    <div>

        <el-row :gutter="20" v-for="tmp in items.length/cnt" :key="tmp">
        <!-- gutter는 개체 사이의 여백 -->
            <el-col :span="24/cnt" v-for="tmp1 in cnt" :key="tmp1" style="cursor:pointer" 
                @click="handleOrder(items[ (tmp-1) * cnt + (tmp1-1) ].code)">
            <!-- span은 기본값 24임.  -->
            <el-image :src="items[ (tmp-1) * cnt + (tmp1-1) ].img" />
            <p>물품명: {{ items[ (tmp-1) * cnt + (tmp1-1) ].name }} </p><!-- 한 줄에 3개씩 나오게 하는 방정식 -->
            <p>가격: {{ items[ (tmp-1) * cnt + (tmp1-1) ].price }} </p><!-- 한 줄에 3개씩 나오게 하는 방정식 -->
            </el-col>
        </el-row>
    </div>
</template>

<script>
    export default {
        created() {
            this.handleData();
        },

        data() {
            return {
                items: [],
                cnt  : 4,
            }
        },

        methods: {
            handleOrder(code) { // 주문페이지(Order)로 이동
                console.log("Shop.vue => handleOrder", code);

                this.$router.push({
                    path:'/order',
                    /* path - query로 전달 O. params는 전달 X
                    name: 'Order' 로 할 때는 path, params 둘 다 전달 O 
                    query는 주소창에 정보 표시, params는 주소창에 정보 표시 X (중요한 정보일 때 사용. 1회만) */
                    query: { icode: code },
                    params: { key: '숨김정보' }
                });
            },

            handleData() {
                for(let i=0; i<12; i++) { // 0~11. 총 12개
                    this.items.push({
                        code: i + 1,
                        name: '사과' + i,
                        price: 1000 + i,
                        qty: 1000 - i,
                        img: 'https://picsum.photos/500/300?image=' + (1 + i)
                    });
                }
            }
        }
    }
</script>

<style scoped>

</style>

0개의 댓글