- 商品详情页
- 1. 新增路由
- 2. 新增vue页面
- 3. 添加物品到购物车
- 看效果
- 总结
商品详情页
当用户在商品列表页中点击时,就会跳转到该页面。
步骤如下:
1. 新增路由
向src/router/index.js中增加:
import GoodsDetails from '@/views/shops/goods_details'Vue.use(Router)export default new Router({routes: [{path: '/shops/goods_details',name: 'GoodsDetails',component: GoodsDetails},]})
2. 新增vue页面
向 src/views/shops/goods_details 中增加:
<template><div class="background"><div class="goods_detail" style="height: 100%;"><header class="top_bar"><a onclick="window.history.go(-1)" class="icon_back"></a><h3 class="cartname">商品详情</h3></header><div class="tast_list_bd" style="padding-top: 44px;"><main class="detail_box"><!-- 轮播图 --><div class="home_ban"><div class="m_banner clearfix" id="my_banner"><ul class="banner_box" ><div v-for="image in good_images"><li><img :src="image" alt="" style="height: 300px"/></li></div></ul><ul class="point_box" ><li></li></ul></div></div><section class="product_info clearfix"><div class="product_left"><p class="p_name">{{good.name}}</p><div class="product_pric"><span>¥</span><span class="rel_price">{{good.price}}</span><span></span><span style='color: grey;text-decoration: line-through;font-size: 18px;margin-left: 14px;'>原价: ¥{{good.original_price}}</span></div><!--<div class="product_right">降价通知</div>--></div></section><span class="divider" style="height: 2px;"></span><div id="choose_number" style= "height: 40px; background-color: #fff;"><label style="font-size: 18px; float: left; margin-left: 10.5px; margin-top: 7.5px;">购买数量</label><div style= "padding-top: 5px;"><img src="../../assets/add@2x.png" style="margin-right: 10px; display: inline;float:right;width:30px;" class="plus" @click="plus"/><input pattern="[0-9]*" v-model="buy_count" type="text" name="counts" style="width:30px;display: inline;float:right;border: 0.5px solid #e2e2e2;line-height:28px;text-align:center;"/><img src="../../assets/minus@2x.png" style="display: inline;float:right;width:30px;" class="minus" @click="minus"/></div></div><section class="product_intro"><div class="pro_det" v-html="good.description" style='padding: 0 6.5px;'></div></section></main></div><footer class="cart_d_footer"><div class="m"><ul class="m_box"><li class="m_item"><a @click="toCart" class="m_item_link"><em class="m_item_pic three"></em><span class="m_item_name">购物车</span></a></li></ul><div class="btn_box clearfix" ><a @click="addToCart" class="buy_now">加入购物车</a><a @click="zhifu" class="buybuy">立即购买</a></div></div></footer></div></div></template><script>import { go } from '../../libs/router'//import { swiper, swiperSlide } from 'vue-awesome-swiper'import {scrollPic} from '../../libs/index.js'export default{data(){return {good_images: [],good: "",buy_count: 1,good_id: this.$route.query.good_id,}},watch:{},mounted(){scrollPic(); //轮播图this.$http.get(this.$configs.api + 'goods/goods_details?good_id=' + this.good_id).then((response)=>{console.info(this.good_id)console.info(response.body)this.good = response.body.goodthis.good_images = response.body.good_images},(error) => {console.error(error)});},methods:{addToCart () {alert("商品已经加入到了购物车")let goods = {id: this.good_id,title: this.good.name,quantity: this.buy_count,price: this.good.price,image: this.good_images[0]}this.$store.dispatch('addToCart', goods)},toCart () {go("/cart", this.$router)},plus () {this.buy_count = this.buy_count + 1},minus () {if(this.buy_count > 1) {this.buy_count = this.buy_count - 1}},zhifu () {go("/shops/dingdanzhifu?good_id=" + this.good_id + "&buy_count=" + this.buy_count, this.$router)},},components: {},computed: {}}</script>
在上面的代码中,
- 实现了加入购物车的方法
- 实现了对于支付页面的跳转
- 实现了从远程接口读取数据
3. 添加物品到购物车
下面的代码是把某个商品添加到购物车中:
addToCart () {console.info('加入购物车')alert("商品已经加入到了购物车")let goods = {id: this.good_id,title: this.good.name,quantity: this.buy_count,price: this.good.price,image: this.good_images[0]}this.$store.dispatch('addToCart', goods)},
同时,在 src/vuex/actions.js中,添加如下代码:
export const addToCart = ({ commit }, product) => {commit(types.ADD_TO_CART, {id: parseInt(product.id),image: product.image,title: product.title,quantity: product.quantity,price: product.price})}
看效果

总结
- 购物车使用了Vuex来保存数据。 下一节会详述。
- 进入到支付页面,在后面会详述。 这个页面我们只加上一个链接就好了
- 本页面使用了后台提供的接口,会返回必要的数据。 接口结构略。
