JSFiddle - React, Tailwind, and code Playground

by flourscent

HTML

<script src="https://unpkg.com/[email protected]"></script>
<div id="app">
 <p>{{ items[0].name }}: {{ items[0].price }} x {{ items[0].quantity }}</p>
  <p>소계: {{ totalPrice | numberWithDelimiter }} 원</p>
  <p>합계(세포함): {{ totalPriceWithTax | numberWithDelimiter }} 원</p>
  <!-- 속성값에 따라 화면 표시 여부가 결정 -->
  <p v-show="!canBuy">
   {{ 1000 | numberWithDelimiter }} 원 이상부터 구매 가능
  </p>
</div>

JavaScript

var items = [
  {
    name: '연필',
    price: 300,
    quantity: 0
  },
  {
    name: '공책',
    price: 400,
    quantity: 0
  },
  {
    name: '지우개',
    price: 500,
    quantity: 0
  }
]
var vm = new Vue({
  el: '#app',
  data: {
    items: items
  },
  filters: {
    numberWithDelimiter: function (value) {
      if (!value) {
        return '0'
      }
      return value.toString().replace(/(\d)(?=(\d{3})+$)/g, '$1,')
    }
  },
  computed: {
    totalPrice: function () {
      return this.items.reduce(function (sum, item) {
        return sum + (item.price * item.quantity)
      }, 0)
    },
    totalPriceWithTax: function () {
      return Math.floor(this.totalPrice * 1.10)
    },
    canBuy: function () {
      return this.totalPrice >= 1000 // 1000원 이상이므로 구매 가능
    }
  }
})
window.vm = vm