1
0

ShoppingCart.vue 927 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <template>
  2. <div class="cart">
  3. <h2>Your Cart</h2>
  4. <p v-show="!products.length">
  5. <i>Please add some products to cart.</i>
  6. </p>
  7. <ul>
  8. <li v-for="product in products" :key="product.id">
  9. {{ product.title }} - {{ product.price | currency }} x {{ product.quantity }}
  10. </li>
  11. </ul>
  12. <p>Total: {{ total | currency }}</p>
  13. <p><button :disabled="!products.length" @click="checkout(products)">Checkout</button></p>
  14. <p v-show="checkoutStatus">Checkout {{ checkoutStatus }}.</p>
  15. </div>
  16. </template>
  17. <script>
  18. import { mapGetters, mapState } from 'vuex'
  19. export default {
  20. computed: {
  21. ...mapState({
  22. checkoutStatus: state => state.cart.checkoutStatus
  23. }),
  24. ...mapGetters('cart', {
  25. products: 'cartProducts',
  26. total: 'cartTotalPrice'
  27. })
  28. },
  29. methods: {
  30. checkout (products) {
  31. this.$store.dispatch('cart/checkout', products)
  32. }
  33. }
  34. }
  35. </script>