1、顶部显示‘运动装备列表’和‘购物车’选项 2、运动装备列表页面(初始页面) (1)页面展示附件equiplist.txt提供的所有运动装备列表,并且每个运动装备都有‘加入购物车’按钮。 (2)点击‘加入购物车’按钮,系统往运动装备列表添加对应运动装备,并且弹出提示‘加入购物车成功’。 3、购物车页面(点击‘购物车’按钮切换) (1)购物车无运动装备如上图 (2)购物车有运动装备如下图 (3)页面展示运动装备信息,并且每个运动装备都有‘删除装备’按钮。底部显示当前运动装备的购物车总价。 (4)点击‘删除装备’按钮,系统会移除运动装备列表中对应的运动装备,并且弹出提示‘删除装备成功’。
时间: 2024-01-14 14:02:20 浏览: 67
好的,这是一个更为详细的问题,需要更多的代码实现。
首先,在顶部显示“运动装备列表”和“购物车”选项,可以在App.vue中定义一个导航栏组件,使用Vue Router来实现选项卡的切换。
```
//App.vue
<template>
<div>
<nav>
<router-link to="/">运动装备列表</router-link>
<router-link to="/cart">购物车</router-link>
</nav>
<router-view></router-view>
</div>
</template>
<script>
import { mapState } from 'vuex'
export default {
computed: {
...mapState(['cartItems'])
}
}
</script>
```
然后,在store.js中定义购物车状态和mutations,还需要定义一个getter计算购物车中所有商品的总价:
```
//store.js
const state = {
cartItems: []
}
const mutations = {
addToCart(state, item) {
state.cartItems.push(item)
},
removeFromCart(state, index) {
state.cartItems.splice(index, 1)
}
}
const getters = {
cartTotal(state) {
return state.cartItems.reduce((total, item) => total + item.price, 0)
}
}
export default new Vuex.Store({
state,
mutations,
getters
})
```
接下来,在运动装备列表页面中,使用axios或者fetch从服务器获取装备列表,并在页面中展示所有运动装备,为每个运动装备添加“加入购物车”按钮:
```
//Equiplist.vue
<template>
<div>
<h1>运动装备列表</h1>
<ul>
<li v-for="(item, index) in equiplist" :key="item.id">
<span>{{ item.name }}</span>
<span>{{ item.price }}</span>
<button @click="addItemToCart(index)">加入购物车</button>
</li>
</ul>
</div>
</template>
<script>
import { mapMutations } from 'vuex'
import axios from 'axios'
export default {
data() {
return {
equiplist: []
}
},
created() {
axios.get('/api/equiplist').then(response => {
this.equiplist = response.data
})
},
methods: {
...mapMutations(['addToCart']),
addItemToCart(index) {
const item = this.equiplist[index]
this.addToCart(item)
alert('加入购物车成功')
}
}
}
</script>
```
在购物车页面中,根据购物车状态中的商品信息展示所有商品,并为每个商品添加“删除”按钮。在页面底部显示购物车总价。
```
//Cart.vue
<template>
<div>
<h1>购物车</h1>
<ul>
<li v-for="(item, index) in cartItems" :key="item.id">
<span>{{ item.name }}</span>
<span>{{ item.price }}</span>
<button @click="removeItemFromCart(index)">删除装备</button>
</li>
</ul>
<p>购物车总价:{{ cartTotal }}</p>
</div>
</template>
<script>
import { mapState, mapMutations, mapGetters } from 'vuex'
export default {
computed: {
...mapState(['cartItems']),
...mapGetters(['cartTotal'])
},
methods: {
...mapMutations(['removeFromCart']),
removeItemFromCart(index) {
this.removeFromCart(index)
alert('删除装备成功')
}
}
}
</script>
```
最后,在路由中定义运动装备列表页面和购物车页面:
```
//router.js
import Equiplist from './components/Equiplist.vue'
import Cart from './components/Cart.vue'
const routes = [
{ path: '/', component: Equiplist },
{ path: '/cart', component: Cart }
]
export default routes
```
以上就是实现运动装备管理系统中“加入购物车”和“删除装备”功能的完整代码实现。希望能对您有所帮助。
阅读全文