P184-P202 详情页商品信息+商家信息

一、商品信息的展示

1.应将所有数据整合成一个对象,

network/detail.js

P184-P202 详情页商品信息+商家信息_第1张图片

 Detail.vue

P184-P202 详情页商品信息+商家信息_第2张图片

P184-P202 详情页商品信息+商家信息_第3张图片

 2. 封装一个独立的组件

views/detail/childComps/DetailBaseInfo.vue

P184-P202 详情页商品信息+商家信息_第4张图片

 二、商家信息的展示

1.应将所有数据整合成一个对象,

network/detail.js

P184-P202 详情页商品信息+商家信息_第5张图片

  Detail.vue

P184-P202 详情页商品信息+商家信息_第6张图片

 2. 封装一个独立的组件

views/detail/childComps/DetailShopInfo.vue

写样式

P184-P202 详情页商品信息+商家信息_第7张图片

 在Deatil.vue中引入

P184-P202 详情页商品信息+商家信息_第8张图片

 绑定组件P184-P202 详情页商品信息+商家信息_第9张图片

问题一:在详情页不需要展示  首页、分类、我的、购物车

P184-P202 详情页商品信息+商家信息_第10张图片

 原因是下面的导航栏脱离了标准流,所以覆盖了

在Detail.vue里面

P184-P202 详情页商品信息+商家信息_第11张图片

 问题二:引入better-scroll滚动

1.P184-P202 详情页商品信息+商家信息_第12张图片

 2.

P184-P202 详情页商品信息+商家信息_第13张图片

 P184-P202 详情页商品信息+商家信息_第14张图片

 三、商品详情数据展示

1.数据不多,所以不需要整合,只要定义一个对象

Detail.vue

P184-P202 详情页商品信息+商家信息_第15张图片

 view/detail/childComps/DetailGoodsInfo

P184-P202 详情页商品信息+商家信息_第16张图片

 在Detail.vue 监听发出的事件,然后刷新高度

 P184-P202 详情页商品信息+商家信息_第17张图片

四、商品参数信息的展示

1.依然是整合数据

network/detail.js

P184-P202 详情页商品信息+商家信息_第18张图片

 Detail.vue

 

 2.写好样式  view/detail/childComps/DetailParamInfo

P184-P202 详情页商品信息+商家信息_第19张图片

五、商品评论

方法类似,这里省略

另讲一个知识点——时间戳

问题:如何让将时间戳 转成 时间格式化字符串(常用方法)

1.将时间戳转成Date对象

const data=new Date(1535694719*1000)——因为时间戳是秒所以要乘1000

2.将date进行格式化,转成对应的字符串

data.getFullYear() + data.getMounth()+1

data->FormamtString(太常用)  所以很多语言已经把这个功能封装好了

如java 里面 fmt.format(data,'yyyy-MM-dd hh:mm:ss')

y:year 年

M:Mounth 月

d:day 日

h:hours 小时(h(12小时)/ H(24小时))

m:minutes 分钟

5.1 在common/utils.js里面封装了一个时间格式化的函数

5.2  在DetailCommentInfo.vue里面引入该函数;

 实现一个滤波器

P184-P202 详情页商品信息+商家信息_第20张图片

 P184-P202 详情页商品信息+商家信息_第21张图片

 

六、商品推荐的展示

这个展示很类似于首页商品的推荐展示,所以可以把数据给GoodsList.vue(里面包含GoodsItemList)去展示

6.1    Detail.vue 

6.2 这里数据结构不一样,不能直接套用

在 GoodsItemList.vue里定义一个计算属性

 原本的goodsItem.show.img 由计算属性showImage代替

 6.3 这里出现了一个问题

imageLoad对图片做了一个加载的监听

通过$bus 事件总线发出事件

P184-P202 详情页商品信息+商家信息_第22张图片

 在Home.vue里对发出的事件做出监听,而当我们复用GoodsList-GoodsItemList时,详情页的推荐图片加载完成时不应该通知首页刷新,而应该通知详情页刷新,所以要解决这个问题

P184-P202 详情页商品信息+商家信息_第23张图片

 方案1:判断路由 

P184-P202 详情页商品信息+商家信息_第24张图片

 方案2:

 都只发出一种事件

P184-P202 详情页商品信息+商家信息_第25张图片

首先我们在Home.vue里进行了事件的监听

P184-P202 详情页商品信息+商家信息_第26张图片 

 

在 deactivated() 里 取消全局事件的监听(Detail.vue 也类似,但是由于没用keep-alive缓存,所以要在  destroyed()里面取消监听)

P184-P202 详情页商品信息+商家信息_第27张图片

 所以可以发现,mounted()事件监听里面的内容时雷同重复的,所以我们可以用mixin混入

common/mixin.js

P184-P202 详情页商品信息+商家信息_第28张图片

 把Home.vue的mounted()里面的监听事件删掉,引入  import {itemListenerMixin} from "common/mixin"   (Detail.vue类似)

P184-P202 详情页商品信息+商家信息_第29张图片

紧接着我们发现这个似乎也是重复定义的,最好也用混入

 做法是将这个变量提取放到common/mixin.js里

P184-P202 详情页商品信息+商家信息_第30张图片

 除此之外,components,methods,也可以混入

 

你可能感兴趣的:(html,前端)