关于详情页的具体制作

我们此步实现的是,在主页里面点击下列商品的时候,是可以跳转到详情页并携带iid,那么接下来记录下具体的一些思路。

首先,在商品详情的组件当中添加一个事件监听事件,之后,在这个事件当中,实现跳转到详情页。

详情页的话,我直接添加了一个路由,方便之后的操作,根据观察api,可知每个商品的iid是不一样的,因此我们使用了动态路由。

首先,在index.js中添加下面语句:

const detail =()=> import('../../views/detail/detail')Vue.use(Router)const routes=[  {path:'/detail/:iid',  component:detail}]const router=new Router({    routes,    mode:"history"})export default router

goodsitem里面所添加的具体内容如下:

首先,在<template>模板的根元素上的处理:

<div class="goodsitem" @click="itemclick">

在methods里面的添加:

<script>export default {name: "goodsitem",  props:{  goodsitem: {    type:Object,    default(){      return{}    }  }  },methods:{  imageload(){    this.$bus.$emit("itemimageload")  },  itemclick(){    this.$router.push('./detail/' this.goodsitem.iid)  }}}</script>

然后,对detail.vue做出以下处理:

data() {    return {      iid: null    }  }, created() {    // console.log(this.$route.params.iid)    this.iid = this.$route.params.iid  }

那下面的话,我们来实现下详情页的导航栏的制作。之前,在做home首页的时候,封装了一个navbar组件,那么接下来可以直接拿过来进行一定的修改,来达成以下效果:

由于我之前的封装,是设置了三个具名插槽:

<template>  <div class="navbar">    <div class="left"><slot name="left"></slot></div>    <div class="center"><slot name="center"></slot></div>   <div class="right"><slot name="right"></slot></div>  </div></template>

可以把这个进行一定的修改,用进详情页的导航栏中。

我们可以再封装一个detailnav组件,具体写法如下:

<template>  <div>    <navbar>      <div slot="left" class="left" @click="backclick">        <img src="../../../src/assets/img/back.svg">      </div>      <div slot="center" class="title">        <div v-for="(item,index) in title"             class="aaa" :class="{active:index === currentIndex}" v-on:click="itemclick(index)">          {{item}}        </div>      </div>    </navbar>  </div></template><script>import Navbar from "../../../src/components/common/navbar/navbar";export default {  name: "detailnav",  components: {Navbar},  data(){    return{      title:['商品','参数','讨论','推荐'],      currentIndex:0    }  },  methods:{    itemclick(index){      this.currentIndex = index    },    backclick(){      this.$router.back()    }  }}</script><style scoped>.title{  display: flex;  font-size: 13px;}.aaa{  flex: 1;}.active{  color: greenyellow;}.left img{  margin-top: 10px;}</style>

首先,导入navbar。因为,详情页要实现的是,四个选择项,那么我们可以把这四个选项,先存放在data当中,此代码中,名为title的数组。先使用其center插槽,进行一定的操作,在其中遍历title数组中的每一个元素,这样的话即可显示出四个选项。这样写之后,显示出来的四个选项为纵向排列,那么我们在类中设置其display为flex,并将flex设置为1,实现横向平均分布。之后,为了实现,点击某选项,便会变色。那么,我们先在data当中设置一个currentIndex为0,之后在其中实现一个监听。监听代码中的itemclick事件,我们先用v-bind绑定一个类,在这个类里面我们去设置文字被点中后所需要他变的颜色,之后在methods中处理,this.currentIndex = index,当index ===  currentIndex的时候,便会显示出相应的颜色。在这里的话,四个选项以及点中显示为黄绿色已经做完了。

那么接下来,还有最后一个功能实现,即为点击左上角的箭头,便可返回主页。

则,先在为left的具名插槽中添加箭头的图片。在此插槽当中事件监听一个backclick,backclick中实现路由跳转的话,直接显示this.$router.back(),即可跳回主页。

之后,就是在detail.vue中,直接import且注册detailnav组件,且在<template>组件中,添加这个组件的标签即可。

那么接下来,我们即来实现详情页的轮播图,之前在主页当中已经写过轮播组件了。那么目前最主要的即是,取到每次需要展示的图片。

首先,现在网络请求模块部分的文件里增加一个,detail.js文件,具体显示如下:

import {request} from './request'export function getdetails(iid){  return request({    url:"detail",    params:{      iid    }  })}

之后,我们在detail.vue中进行如下操作:

import {getdetails} from "../../network/detail";export default {   data() {    return {      iid: null,      topImages: []    }  },  created() {    // console.log(this.$route.params.iid)    this.iid = this.$route.params.iid    getdetails(this.iid).then(res => {      console.log(res);      const big =res.data.result;      this.topImages = big.itemInfo.topImages      console.log(this.topImages)    })    // activated() {    //   this.iid = this.$route.params.iid    //   console.log(this.$route.params.iid) //const big =res.data.result;    //  this.topImages = big.itemInfo.topImages    //    //   })    // }  }}</script>

这里我们有个地方需要注意,因为之前写首页的时候,我用<keep-alive>包裹了<router-view/>,因此,如果不添加任何的话,这边的created会一直存在一直存在,而不会消亡,会导致出点击商品A的时候的轮播图,而在点击商品B的时候依旧出现的是商品A的轮播图。因此,有两个办法。1.写入activated函数当中。第二种,在app.vue中的<keep-alive>中添加exclude并添加其路由名。此处便为,<keep-alive exclude='detail'>(路由名)即可。之后,再次封装一个detailswiper组件,实现如下代码:

<template><swiper>  <swiperitem   class="tiny" v-for="item in topImages">    <img :src="item">  </swiperitem></swiper></template><script>import swiper from "../../../src/components/common/swiper/swiper";import swiperitem from "../../../src/components/common/swiper/swiperitem";export default {  name: "detailswiper",  components:{swiperitem,swiper},  props:['topImages']}</script><style scoped>.tiny{  height: 300px;  overflow-y: hidden;}</style>

这样即完成了,轮播与navbar与点击商品出现详情页的操作。

来源:https://www.icode9.com/content-4-811851.html

(0)

相关推荐

  • 拼多多商品详情页制作技巧

    我们都知道商品的详情页是商品展示的一个重要板块,主要承担了展示商品详细信息的功能,也直接影响了商品的转化情况.卖家需要注重店铺商品的详情页设计和制作,以此吸引更多的消费者下单,促进转化.那么,下面我们 ...

  • 详情页的制作

    简单地说一下: 海报  把图片做的精美吸引客户 产品展示图 细节展示图 卖点优势图(这个一般会跟细节展示图结合在一块) 好评图   将客户的好评放进去,给客户增加信心 包装图   如果包装够精美可以加 ...

  • 菜谱详情页

    菜谱大全 家庭版烤鱼 274001浏览 · 2758做过 用料 罗非鱼 750克 葱 5克 姜 5克 蒜 5克 香菇 100克 金针菇 100克 西洋菜 300克 莴笋 300克 豆腐 50克 油 适 ...

  • 菜鸟记117-妙用打印标题和自定义页脚,3分钟完成多页分类表格制作

    注:本图由孩她妈赞助 关键词:EXCEL2016:WORD2016:COUNTIF函数:打印标题:自定义页脚:打印分割线:操作难度*** 本学期开始期中教学检查了,教务处要组织各系教研室开展自查自纠工 ...

  • 商品详情页

    店铺 客服 收藏 加入购物车 立即购买 1/5  详情

  • 实战高手教你如何设计裂变海报和详情页

    第一个海报的设计原则第一点是九秒理论,什么是九秒理论?也就是说,你这张海报,假设用户现在在朋友圈已经点开了,他能给你的时间就只有九秒钟,那么从你的海报标题开始看,看到下面这九秒里面,如果你没有让用户了 ...

  • 【淘宝美工教程】15个小技巧,教你如何设计好详情页设计细节!

    作者:FFF丨三 前言:这是一篇扫盲式的手机详情页的设计细节文章,主要写给0基础的小白设计师的,大佬们笑一笑就好了,当然有错误的地方也恳求指正,不仅能让我学习到知识,还能避免把人带弯. 目的:做详情之 ...

  • 漫步淘宝的老外摄影师,背地里竟收藏了这么多详情页?

    打开聊天界面,鲁小本收到老马发来的图片--五位穿着脸基尼的模特,站在阳光明媚的海滩上,整齐地叉腰迈腿,摆出时尚造型.鲁小本不甘示弱,接连甩出好几张近日发掘的好图--毛色染成紫色的泰迪.逼真的白菜毯子- ...