当前位置: 首页 > news >正文

Vue 详情模块 1

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:详情数据,吸顶效果及axios封装

目录

详情

详情吸顶

详情数据

Axios初次封装

创建http.js

封装方式1

封装请求函数

使用请求函数

封装方式2

封装

调用

总结


详情

详情吸顶

实现吸顶效果:下划时,tab页被置顶在页面顶部。

使用粘性定位,当top等于0px时,固定在顶部。

在filmsView.vue中对film-header组件设置类样式。

示例如下:

<film-header class="sticky"></film-header>

类样式设定

<style lang="scss" scoped>
.filmSwiperItem {img {width: 100%;}
}
.sticky {position: sticky;top: 0;background: white;
}
</style>

说明:

position: sticky 是 CSS 的一种定位方式,

结合了相对定位(relative)和固定定位(fixed)的特性,

使元素在滚动到指定位置时固定显示。

它常用于实现导航栏吸顶、侧边栏固定等效果,

需配合 top、bottom 等偏移属性使用,

并依赖父容器的滚动机制。

吸顶效果:

详情数据

在详情detailView.vue页面的created函数中使用axios请求后端接口获取数据。

把前面页面传递过来的参数id,拼接到请求路径中。

注意:需要重新复制一下header中的那两个参数,与原来的header设置有所不同。

示例如下:

import axios from 'axios'export default {created () {// 当前匹配的路由console.log('created', this.$route.params.id)// axios 利用 id发请求到详情接口,获取详情数据,布局页面axios({url: `/api/gateway?filmId=${this.$route.params.id}&k=6027054`,headers: {'X-Host': 'mall.film-ticket.film.info','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777","bc":"130100"}'}}).then(res => {console.log(res.data)})}
}

Axios初次封装

接口的请求有很多都是公共的可以封装起来。

创建http.js

在src下创建util文件夹,在文件夹中再创建http.js文件。

封装方式1
封装请求函数

对于数据请求的封装,封装为专用的函数。

示例如下:

import axios from 'axios'function httpForList () {return axios({url: '/api/gateway?cityId=130100&pageNum=1&pageSize=10&type=1&k=8043159',headers: {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1','X-Host': 'mall.film-ticket.film.list','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777"}'}})
}function httpForDetail (id) {return axios({url: `/api/gateway?filmId=${id}&k=6027054`,headers: {'X-Host': 'mall.film-ticket.film.info','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777","bc":"130100"}'}})
}export default {httpForList,httpForDetail
}

 

使用请求函数

使用的时候,先引入http.js,然后调用就可以了。

修改原有NowPlaying页面请求。

示例如下:

import Vue from 'vue'
import http from '@/util/http'// 定义过滤器处理主演名称
Vue.filter('actorName', (data) => {if (data === undefined) return '暂无主演'return data.map(item => item.name).join(' ')
})export default {data () {return {datalist: []}},mounted () {http.httpForList().then((res) => {this.datalist = res.data.data.films})},

封装方式2
封装
import axios from 'axios'const http = axios.create({baseURL: '',timeout: 10000,headers: {'X-Host': 'mall.film-ticket.film.list','X-Client-Info': '{"a":"3000","ch":"1002","v":"5.2.1","e":"17479694011920413022027777"}'}
})export default http
调用
import Vue from 'vue'
import http from '@/util/http'// 定义过滤器处理主演名称
Vue.filter('actorName', (data) => {if (data === undefined) return '暂无主演'return data.map(item => item.name).join(' ')
})export default {data () {return {datalist: []}},mounted () {http({url: '/api/gateway?cityId=130100&pageNum=1&pageSize=10&type=1&k=8043159',headers: {'X-Host': 'mall.film-ticket.film.list'}}).then(res => {// console.log(res.data)this.datalist = res.data.data.films})},

总结

Vue 渐进式JavaScript 框架 基于Vue2的移动端项目:详情数据,吸顶效果及axios封装

http://www.xdnf.cn/news/1225207.html

相关文章:

  • C++对象访问有访问权限是不是在ide里有效
  • 解决MySQL不能编译存储过程的问题
  • 《Java 程序设计》核心知识点梳理与深入探究
  • SpringMVC全局异常处理+拦截器使用+参数校验
  • 2025 腾讯广告算法大赛 Baseline 项目解析
  • 为什么MCP协议是AI集成的未来API
  • 向华为学习——IPD流程体系之IPD术语
  • 京东云轻量云服务器与腾讯云域名结合配置网站及申请SSL证书流程详解
  • 使用 whisper, 音频分割, 初步尝试,切割为小块,效果还不错 1
  • 服务器地域选择指南:深度分析北京/上海/广州节点对网站速度的影响
  • 宝塔服务器挂载数据盘
  • OPENGLPG第九版学习 - 纹理与帧缓存 part2
  • 在SQL SERVER 中,用SSMS 实现存储过程的每日自动调用
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路汽车的检测识别(C#代码,UI界面版)
  • Django模型查询与性能调优:告别N+1问题
  • 【Java面试题】缓存穿透
  • Linux文件系统理解2
  • Trust Management System (TMS)
  • AR智能巡检系统:制造业设备管理的效率革新
  • 2025.8.1
  • 计算机(电脑)是什么?零基础硬件软件详解
  • 什么是三防平板电脑?三防平板有什么作用?
  • android MVC/MVP/MVVM/MVI架构发展历程和编写范式
  • LLM Prompt与开源模型资源(2)提示工程关键技术
  • WPF TreeView自带自定义滚动条
  • 基于OpenCV的cv2.solvePnP方法实现头部姿态估计
  • 性能测试-性能测试中的经典面试题一
  • 数据赋能(371)——数据挖掘——概述
  • OpenGL 坐标变换
  • 赛思NTP服务器选型推荐,赛思NTP服务器云端助力“数智伊利”步入现实!