ios图文详情加载html_前端项目009 Vue 信息分享系统 商品列表、详情

eab1467b0ae23884b00f0c9c70a36861.png
頔言頔语:进步,一定要进步,进步是跟收入持平的本钱。

01 商品列表

0101 路由配置和数据请求

0102 上拉加载更多

02 商品详情

0201 详情数据请求和展示

0202 轮播图组件提取

0203 商品详情(路由的本质理解)

01 商品列表

0101 路由配置和数据请求

{title:'商品展示',className:'back-goods',route:{name:'GoodsShow',params:{page:1} } }

路由配置信息

{path:'/goods/list/:page',name:'GoodsShow',component:GoodsShow }

在created()当中发起请求

created() {this.$axios.get('goods/getshopcarlist/88,89').then(res=>{console.log(res)}).catch(console.log)// 获取页码// let { page } = this.$route.params;this.loadGoodsByPage();}

得到的数据格式如下

d7bf2baab2c13789059c57750edb1e42.png

然后进行页面的渲染即可

0102 上拉加载更多

当我们上拉加载更多的时候,会继续请求数据并且完成数据的拼接

loadBottom() {this.loadGoodsByPage();// 通知状态改变this.$refs.loadmore.onBottomLoaded();
}

在这里需要完成一个赋值和追加的判断

if (this.page === 1) {this.goodsList = res.data.message;} 
else {this.goodsList = this.goodsList.concat(res.data.message);}

当我们翻页后拿到的数据不足10条,说明已经是最后一页了。后续不能在进行上拉操作

 if (length < 10) {
this.$toast('没有更多数据了');
this.allLoaded = true; 
}

此时遇见一个bug,我们没有定义父容器高度,所以在刚开始的时候就会触发上拉检测机制。

进入上拉检测机制的判定条件是:可视高度+卷进去的高度 = 总长度

ac3a697f5febd6cc5b369b42f6a8c5dd.png

所以我们需要动态检测父亲容器的高度

 mounted() {// 父容器高度(可视) = 设备高度 - 父容器的topthis.wrapperHeight = 
document.documentElement.clientHeight 
- this.$refs.wrapper.getBoundingClientRect().top;
}

并且将wrapperHeight作为高度值绑定在父元素的上

<div :style="{ height:wrapperHeight + 'px' }" ref="wrapper">
</div>

51f2716142668a4315bb0c4966d22a10.png

02 商品详情

0201 详情数据请求和展示

在商品详情页面,我们需要请求商品轮播图还有商品信息像两个数据,若是有一个数据请求失败,则判定数据请求失败

这个时候需要使用 $axios.all([]).then(传播响应).catch()进行合并请求

 created() {// 商品轮播图 getthumimages/:imgid// 商品信息 goods/getinfo/:goodsidlet imgReq = this.$axios.get(`getthumimages/${this.goodsId}`);let infoReq = this.$axios.get(`goods/getinfo/${this.goodsId}`);this.$axios.all([imgReq,infoReq]).then(this.$axios.spread((imgRes,infoRes)=>{this.imgs = imgRes.data.message;this.info = infoRes.data.message[0];})).catch(console.log)
}

数据请求成功进行传播响应。使用this.$axios.spread( ),在传播响应的时候,将拿到的两个结果保存在我们data当中

拿到的数据格式如下所示:

55d53ca17324cbf900801ed5d62f7e57.png

0202 轮播图组件提取

轮播图部分考虑到和Home组建的轮播图相似,所以我们进行组件提取

组件提取的步骤:

  • 01. 样式是否一样
  • 02. 轮播图请求的URL是否一致
  • 03. 响应回来的数据是否一致

Home组件部分和商品详情部分的数据发送请求还响应回来的数据格式稍有不同,需要对代码进行健壮性调整:

01. 响应回来的图片数据的url部分不同

<img :src="item.img||item.src" alt="">

02. 因为轮播图请求的URL也不同

所以url采用父组件传递的方式

<my-swipe url="getlunbo" />

0203 商品详情(路由的本质理解)

我们发现,商品图文介绍和新闻详情的页面是一致的,当我们不想将图文介绍提取出来成为一个全局组件,可以在跳转的时候直接跳转到新闻详情页面

这个时候就必须看看路由跳转的详细流程了

d9370573975703670816038a696168e0.png
goGoodsInfo() {
// 直接进入到新闻详情
this.$router.push({name:'NewsDetail',params:{id:this.$route.query.id}
});
},

所以此时的新闻详情不仅要显示新闻详情,还需要显示商品详情信息

素以新闻详情的页面需要进行传递过来的参数的判定

这个参数在局部路由钩子里进行

beforeRouteEnter (to, from, next) {let title = '详情';// 1: 判断from是新闻列表,还是商品详情if (from.name === 'NewsList') {title = '新闻详情'; } 
else if (from.name === 'GoodsDetail') {title = '商品图文信息' }// 这里没有this,因为组件还没有被实例化next(vm => {// 通过 `vm` 访问组件实例 就是这里未来的thisvm.myTitle = title;});}

但是注意此时还没有this,所以需要通过next()函数传递过来一个vm进行数据的传递

在商品详情被点击的时候,跳转到商品图文详情页面, 为了确定是那个商品,我们传进来一个商品的ID过来。

goGoodsInfo() {// 直接进入到新闻详情this.$router.push({name:'NewsDetail',params:{id:this.$route.query.id }});
}

关于这个项目的首页,这是我想分享给你们的

我的知识和文字不成熟,项目也不成熟,但是我在进步!

若有意见,欢迎留言指正 !!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zemax设置 像方远心_ZEMAX相机标定非常不完全指南

ZEMAX是广为使用的一款光学仿真软件&#xff0c;是进行光路设计和分析的利器&#xff1b;而相机标定&#xff0c;则是进行机器视觉任务时&#xff0c;拿到一款相机&#xff0c;对其实际参数进行确定的过程。因此看起来&#xff0c;二者其实主要是针对不同的侧重点。前者主要面向…

activiti 生命周期_一文让你读懂什么是Activiti工作流

Activiti工作流学习经验总结(一)什么是工作流&#xff1f;工作流指通过计算机对业务流程进行自动化管理&#xff0c;实现多个参与者按照预定义的流程去自动执行业务流程。什么是Activiti&#xff1f;Activiti 是一个开源架构的工作流引擎&#xff0c;基于bpmn2.0 标准进行流程定…

关于hkcmd.exe造成的和Eclipse之间热键冲突

可能是自己新买的笔记本比较强大,显卡也比较牛叉.当使用一些常用的Eclipse快捷键的时候Eclipse本身没有反应,反而显示器有了反应. 经常用的Eclispse中的快捷键CtrlAlt↑ 和CtrlAlt↓ 造成显示器内容的上翻转和下翻转 解决方式: 下载Windows Hot Key Explore 软件 在安装启动后…

中对曲线进行斜率提取_Au中的EQ处理方法——图形均衡器和参数均衡器

之前的文章详细讲过使用Cubase进行EQ处理&#xff0c;其实如果只是要对录音进行混音修音的话&#xff0c;使用Au也可以&#xff0c;Adobe Audition作为音乐录制及后期软件&#xff0c;具有很强大的后期功能&#xff0c;而且也可以添加插件&#xff0c;是修音混音非常好的工具。…

2 数据源配置_Spring, MyBatis 多数据源的配置和管理

作者&#xff1a;digdeep出处&#xff1a;https://www.cnblogs.com/digdeep/p/4512368.html热门推荐vuewebsocketSpringboot实现的即时通信开源项目springboot炸翔版CMS开源系统同一个项目有时会涉及到多个数据库&#xff0c;也就是多数据源。多数据源又可以分为两种情况&#…

(九十)使用多个storyboard+代码实现控制器的分开管理

使用单个storyboard会使得项目难与管理&#xff0c;使用纯代码又会过于麻烦&#xff0c;因此如果能将二者结合起来&#xff0c;并且使用多个storyboard&#xff0c;会使得项目简单简单、方便许多。 下面以一个简单的视图关系为例&#xff0c;介绍多个storyboard的用法。 ①有pa…

吗 支持windows_M1能否原生支持Windows 苹果把问题抛给了微软

关于苹果M1处理器近期已经有了非常多的报道&#xff0c;人们对其出色的性能表现以及较低的功耗还是充满了期待。那么最后一个也是最重要的一个问题&#xff0c;基于苹果M1处理器的电脑能原生支持微软Windows吗&#xff1f;毕竟很多人买回苹果MacBook第一件事就是安装Windows 10…

4怎么放大字体_win8.1系统如何放大所有字体?

电脑安装上[color#070c0 !important]win8.1正式版系统&#xff0c;发现桌面的字体和网页的字体比较小&#xff0c;看起来比较吃力&#xff0c;从而影响操作。一般win8.1系统字体都默认设置好的&#xff0c;不过用户可以进行放大&#xff0c;那么win8.1系统怎么放大所有字体&…

进程 zabbix_Zabbix监控在windows的进程(非进程数)

场景介绍&#xff1a;小Z同学最近遇到个项目需求&#xff0c;需求是用zabbix监控运行在windows的进程。然鹅&#xff0c;当小Z同学在网上搜了一大堆&#xff0c;发现基本上都是使用官方的proc.num(***.exe)键值拿到进程数量&#xff0c;很显然&#xff0c;这并不符合客户实际的…

phpcms文件所需权限

转载于:https://www.cnblogs.com/zhongheng/p/4684087.html

python mysql 时间比较大小_python时间函数与mysql时间函数转换

时间相关操作&#xff0c;时间有三种表示方式&#xff1a;时间戳 1970年1月1日之后的秒&#xff0c;即&#xff1a;time.time()格式化的字符串 2014-11-11 11:11&#xff0c; 即&#xff1a;time.strftime(%Y-%m-%d)结构化时间 元组包含了&#x…

mysql npe问题_MySQL为Null会导致5个问题,个个致命!

本文转载自微信公众号「Java中文社群」&#xff0c;作者磊哥。转载本文请联系Java中文社群公众号。正式开始之前&#xff0c;我们先来看下 MySQL 服务器的配置和版本号信息&#xff0c;如下图所示&#xff1a;“兵马未动粮草先行”&#xff0c;看完了相关的配置之后&#xff0c…

数据结构导论(一)

导读&#xff1a;在看书前&#xff0c;我对这本书的内容&#xff0c;是 这么想的&#xff1a;数据结构&#xff0c;那大概就是关于数据和结构的东西。而讲到数据&#xff0c;估计会说到数据类型&#xff0c;数据定义&#xff0c;数据存储等方面。然后在结构方面&#xff0c;就不…

基于java的汽车维修保养智能预约系统论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

mysql 日志同步 数据不同步_Mysql互为主从问题--日志同步数据不同步

Mysql互为主从问题--日志同步数据不同步我搭建的是mysql互为主从 复制两台机器的mysql环境完全相同第一部分测试&#xff1a;B为master A为slave的同步测试在B上创建表lian&#xff0c;并插入数据mysql> create table lian (a int,b char(10));mysql> insert into lian (…

UVALive 4764 dp

DES: 这是一个新的游戏。给你一套牌、编号从1到100000.正常来说。你手中的牌和这次翻的牌是一样的&#xff0c;就会加一分。但是。如果是999的话。加三分。所以问你最大的分是多少。 貌似是简单的DP吧。&#xff08;DP菜鸟...再简单我也不会...T_T...&#xff09;于是...我看懂…

mysql数据库事务命令_MySql学习18----数据库事务---命令使用(02)

本篇讲述数据库中非常重要的事务概念和如何使用MySQL命令行窗口来进行数据库的事务操作。下一篇会讲述如何使用JDBC进行数据库的事务操作。事务是指数据库中的一组逻辑操作&#xff0c;这个操作的特点就是在该组逻辑中&#xff0c;所有的操作要么全部成功&#xff0c;要么全部失…

sequelize连接mysql_Sequelize没有连接mysql

文件config / config.json{"development": {"username": "root","password": null,"database": "example","host": "example.sqlite","dialect": "sqlite"},"stage…

SQL SERVER 2014 各个版本支持的功能

转自&#xff1a;https://technet.microsoft.com/library/cc645993 转换箱规模限制 功能名称EnterpriseBusiness IntelligenceStandardWebExpress with Advanced ServicesExpress with ToolsExpress单个实例使用的最大计算能力&#xff08;SQL Server 数据库引擎&#xff09;1操…

Android无法生成R文件的终极解决办法

R文件如果在clean项目&#xff08;Project—>Clean&#xff09;和 Fix Project Properties&#xff08;如下图&#xff09;&#xff1a; 如果在第一步无法解决的的时候&#xff0c;那可能原因就是资源文件调用的错误&#xff0c;比如资源文件命名不规范&#xff0c;多余的资…