단순 코드 기록/Vue

Vue_Map/for(Sum)/watch

일일일코_장민기 2024. 3. 7. 15:36
728x90
<template>
      <div>
        <h1>{{ mesg }}</h1>
        <div v-for="(book, idx) in bookList" :key="idx">   <!-- key는 유일한 값 -->
            <!-- 체크하면 체크박스의 value인 책JSON이 books[]에 저장  -->
            <!-- 체크할 때마다 books[]이 바뀜 -->
            <input type="checkbox" v-model="books" v-bind:value="book">
            <span>{{book.name}}</span>
            <span>{{book.price}}</span>
        </div>

        <hr>
        선택 교재:
        <!-- books[]을 for문을 통해 하나씩 출력 -->
        <!-- 위에서 체크될 때마다 출력되며, book.name을 통해 JSON 중 이름만 출력 -->
        <!-- key가 동일하면 에러 출력(작동은 됨) -->
        <div v-for="(book, i) in books" :key="i+11">
            {{ book.name }}
        </div>
       
        <hr>
        전체 가격:
        {{ getTotal() }}
       
    </div>
</template>

<script>
export default {
    props:{
        mesg: String
    },
    data: function(){
        return {
            bookList: [
                {name:"자바의 정석", price:3000},
                {name:"JSP 정석", price:4000},
                {name:"Spring 정석", price:5000},
                {name:"jQuery 정석", price:6000},
                {name:"Angular 정석", price:7000},
            ],
            books:[],   //선택된 책 목록 저장
            total:0     //총액
        }
    },
    methods: {
        getTotal: function(){
            var sum=0;
            var books = this.books;

            books.map(
                function(element, index){
                    console.log(index, element.name, element.price);
                    sum += element.price;
                }
            );
            console.log("sum")
            this.total = sum;
            return this.total;
        },
       

        }
}
</script>

<style>

</style>

 

<template>
      <div>
        <h1>{{ mesg }}</h1>
        <div v-for="(book, idx) in bookList" :key="idx">   <!-- key는 유일한 값 -->
            <!-- 체크하면 체크박스의 value인 책JSON이 books[]에 저장  -->
            <!-- 체크할 때마다 books[]이 바뀜 -->
            <input type="checkbox" v-model="books" v-bind:value="book">
            <span>{{book.name}}</span>
            <span>{{book.price}}</span>
        </div>

        <hr>
        선택 교재:
        <!-- books[]을 for문을 통해 하나씩 출력 -->
        <!-- 위에서 체크될 때마다 출력되며, book.name을 통해 JSON 중 이름만 출력 -->
        <div v-for="(book, i) in books" :key="i+11">
            {{ book.name }}
        </div>
       
        <hr>
        전체 가격:
        {{ getTotal() }}
       
    </div>
</template>

<script>
export default {
    props:{
        mesg: String
    },
    data: function(){
        return {
            bookList: [
                {name:"자바의 정석", price:3000},
                {name:"JSP 정석", price:4000},
                {name:"Spring 정석", price:5000},
                {name:"jQuery 정석", price:6000},
                {name:"Angular 정석", price:7000},
            ],
            books:[],   //선택된 책 목록 저장
            total:0     //총액
        }
    },
    methods: {
        getTotal: function(){
            var sum=0;
            var books = this.books;

            for(let index = 0; index < this.books.length; index++){
                let b = this.books[index];
                sum += b.price
            }

            this.total = sum;
            return this.total;
        },
       

        }
}
</script>

<style>

</style>

 

<template>
    <div>
      <h1>{{ mesg }}</h1>
      <div v-for="(book, idx) in bookList" :key="idx">   <!-- key는 유일한 값 -->
          <!-- 체크하면 체크박스의 value인 책JSON이 books[]에 저장  -->
          <!-- 체크할 때마다 books[]이 바뀜 -->
          <input type="checkbox" v-model="books" v-bind:value="book">
          <span>{{book.name}}</span>
          <span>{{book.price}}</span>
      </div>

      <hr>
      선택 교재:
      <!-- books[]을 for문을 통해 하나씩 출력 -->
      <!-- 위에서 체크될 때마다 출력되며, book.name을 통해 JSON 중 이름만 출력 -->
      <div v-for="(book, i) in books" :key="i+11">
          {{ book.name }}
      </div>
     
      <hr>
      전체 가격:
      {{ total }}
     
  </div>
</template>

<script>
export default {
  props:{
      mesg: String
  },
  data: function(){
      return {
          bookList: [
              {name:"자바의 정석", price:3000},
              {name:"JSP 정석", price:4000},
              {name:"Spring 정석", price:5000},
              {name:"jQuery 정석", price:6000},
              {name:"Angular 정석", price:7000},
          ],
          books:[],   //선택된 책 목록 저장
          total:0     //총액
      }
  },

  watch:{
    books:function(){
        var sum=0;
          for(let index = 0; index < this.books.length; index++){
              let b = this.books[index];
              sum += b.price
          }

          this.total = sum;
    }
  }
}
</script>

<style>

</style>

'단순 코드 기록 > Vue' 카테고리의 다른 글

Vue_Calculator응용  (0) 2024.03.08
Vue_Watch(자동 호출 함수)  (0) 2024.03.07
Vue_v-once: 한번 랜더링되면 더이상 바뀌지 않음  (0) 2024.03.07
Vue_v-on  (0) 2024.03.07
Vue_v-for, template태그  (0) 2024.03.07