123456789101112131415161718192021222324252627282930313233343536373839404142 |
- <template>
- <div class="cart">
- <h2>Your Cart</h2>
- <p v-show="!products.length"><i>Please add some products to cart.</i></p>
- <ul>
- <li
- v-for="product in products"
- :key="product.id">
- {{ product.title }} - {{ currency(product.price) }} x {{ product.quantity }}
- </li>
- </ul>
- <p>Total: {{ currency(total) }}</p>
- <p><button :disabled="!products.length" @click="checkout(products)">Checkout</button></p>
- <p v-show="checkoutStatus">Checkout {{ checkoutStatus }}.</p>
- </div>
- </template>
- <script>
- import { computed } from 'vue'
- import { useStore } from 'vuex'
- import { currency } from '../currency'
- export default {
- setup () {
- const store = useStore()
- const checkoutStatus = computed(() => store.state.cart.checkoutStatus)
- const products = computed(() => store.getters['cart/cartProducts'])
- const total = computed(() => store.getters['cart/cartTotalPrice'])
- const checkout = (products) => store.dispatch('cart/checkout', products)
- return {
- currency,
- checkoutStatus,
- products,
- total,
- checkout
- }
- }
- }
- </script>
|