一、前言

1、导航滑动实现

  2、渲染列表信息时让一开始加载的时候就请求数据

3、根据路由的改变,加载图文的改变(实现用户访问网站时可能执行的三个操作)

二、主要内容

1、导航滑动实现:

  (1)演示效果:

  (2)代码实现

<!--导航栏用ul li实现-->
<ul>
<li v-for='(item,index) in categoryList' :key='index'>
<a href="javascript:;">{{item.title}}</a>
</li> </ul>
</div> <style> li {
list-style: none;
display: inline-block;
margin-left: 10px;
height: 30px;
} ul {
/*强制不换行*/
white-space: nowrap;
overflow-x: auto;
padding-left: 0px;
margin: 5;
} </style>

2、渲染列表信息时让一开始加载的时候就请求数据

  (1)在methods里面封装一个请求的方法

 export default{
name:'PhotoList',
data(){
return{
categoryList,
title_h:'图文分享'
}
}, methods:{
loadImageByCategoryId(id){ //这里传入请求的id
this.$axios.get('api/index?type=top&key=79b64827a7a0f95504dfb2f7e903208d'+id)
.then(res=>{
console.log(res.data.result.data)
})
.catch(err=>{
console.log('数据获取失败',err);
})
} }
}

  (2)在created()中最开始就调用这个方法

        created(){

             this.loadImageByCategoryId(0);//0表示所有的数据

             this.$axios.get('api/index?type=top&key=79b64827a7a0f95504dfb2f7e903208d')
.then(res=>{ console.log(res.data.result.data)
})
.catch(err=>{
console.log('新闻数据获取失败',err)
})
}

  (3)当图片过多的时候需要设置图片懒加载(n+1)模式,这里用mint-ui里面的v-lazy

//Mint-ui里面的图片懒加载
<img v-lazy='item.img_url'>

3、根据路由的改变,加载图文的改变(牵涉到动态路由的匹配:https://router.vuejs.org/zh/guide/essentials/dynamic-matching.html#响应路由参数的变化)

  官网上明确告诉我们:当路由从/user/foo 导航到 /user/bar, 原来的组件实例会被复用。因为两个路由都渲染同一个组件,比起销毁再创建,复用显得更加高效。不过,这意味着组件的生命周期钩子不会再被调用。复用组件时,如果想对不同的路由参数做出不同的响应的时候,此时可以用1)watch监听  2)使用beforeRouteUpdate导航守卫

操作一:在当前网站中,直接在url输入动态路由

 (1)下面用beforeRouteUpdate(to, from, next){ }来实现

 methods:{
loadImageByCategoryId(id){ //这里传入请求的id
this.$axios.get('api/index?type=top&key=79b64827a7a0f95504dfb2f7e903208d')
.then(res=>{
console.log(res.data.result.data)
})
.catch(err=>{
console.log('数据获取失败',err);
})
} }, created(){
//api/index?type=top&key=79b64827a7a0f95504dfb2f7e903208d
this.loadImageByCategoryId(0);//0表示所有的数据 this.$axios.get('api/index?type=top&key=79b64827a7a0f95504dfb2f7e903208d')
.then(res=>{ console.log(res.data.result.data)
})
.catch(err=>{
console.log('新闻数据获取失败',err)
})
}, beforeRouteUpdate(to, from, next){
//在当前路由改变,但是该组价被复用时调用
//举例来说,对于一个带有动态参数的路径/foo/:id 在/foo/1 和 /foo/2之间跳转的时候
//由于会渲染同样的Foo组件,因此组件实例会被复用。这个钩子在这个时候就会被调用
console.log(to);//to是目的
this.loadImageByCategoryId(to.params.categoryId); //拿到里面的路由参数调用上面封装的请求方法,就会根据不同的参数请求到不同类型的数据
}
}

操作二:很多时候通过点击上面的滑动导航改变路由

  (1)给每个导航li标签注册点击事件,然后将当前的id传进去

<div class="photo-header">
<ul>
<li v-for='(category,index) in categoryList' :key='index' @click='categoryHandler(category.id)'>
<router-link :to="category.routerName" exact @click.native ='changeHash()'>{{item.title}}</router-link> </li> </ul>
</div>

  (2)在method中定义这个categoryHandler点击事件,

 categoryHandler(id){
this.$router.push({name:'photo.list'}, params:{categoryId:id}) //当用户点击之后就会跳转到这个路由,然后再执行beforeRouterUpdate方法 },

  (3)执行beforeRouteUpdate方法,重新根据不同路由参数请求数据

beforeRouteUpdate(to, from, next){
//在当前路由改变,但是该组价被复用时调用
//举例来说,对于一个带有动态参数的路径/foo/:id 在/foo/1 和 /foo/2之间跳转的时候
//由于会渲染同样的Foo组件,因此组件实例会被复用。这个钩子在这个时候就会被调用
console.log(to);//to是目的
this.loadImageByCategoryId(to.params.categoryId); //拿到里面的路由参数调用上面封装的请求方法,就会根据不同的数据请求到不同类型的数据
}

操作三:用户可能关闭了当前的网站,然后从浏览器另一个网页中直接拿这个路由来刷新(这个时候路由没有更新)

  (1)用beforeRouteEnter

 beforeRouteEnter(to, from, next){
//在渲染该组件的对应路由被confirm前调用
//不能获取组件实例this
//因为当守卫执行前,组件实例还没有被创建
next(vm =>{
vm.loadImageByCategoryId(to.params.categoryId) })
},

结合以上三个操作就可以实现,通过点击不同导航li标签,渲染不同类型的数据, 可以通过在当前网站上输入不同的动态路由参数,渲染不同的数据,还可以从别的网站进来,渲染不同的数据

三、总结

结合以上三个操作就可以实现,通过点击不同导航li标签,渲染不同类型的数据, 可以通过在当前网站上输入不同的动态路由参数,渲染不同的数据,还可以从别的网站进来,渲染不同的数据

Vue(小案例_vue+axios仿手机app)_图文列表实现的更多相关文章

  1. Vue(小案例_vue+axios仿手机app)_图片列表操作

    一.前言 1.让图片还没有被完全加载出来的时候给用户提示                                       2.图片查看器 二.主要内容 1.让图片还没有被完全加载出来的时候 ...

  2. Vue(小案例_vue+axios仿手机app)_购物车(二模拟淘宝购物车页面,点击加减做出相应变化)

    一.前言 在上篇购物车中,如果用户刷新了当前的页面,底部导航中的数据又会恢复为原来的: 1.解决刷新,购物车上数值不变                                         ...

  3. Vue(小案例_vue+axios仿手机app)_购物车

    一.前言 1.购物车 二.主要内容 1.效果演示如下,当我们选择商品数量改变的时候,也要让购物车里面的数据改变 2.具体实现 (1)小球从上面跳到下面的效果 (2)当点击上面的“加入购物车按钮”让小球 ...

  4. Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)

    一.前言                    1.公共轮播图的实现                    2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...

  5. Vue(小案例_vue+axios仿手机app)_上拉加载

    ---恢复内容开始--- 一.前言                                                                                    ...

  6. Vue(小案例_vue+axios仿手机app)_实现用户评论

    一.前言 1.渲染评论列表 2.点击加载按钮,加载更多    3.提交评论 二.主要内容 1.评论列表一般是注册到一个全局的公共组件中 2.请求后台数据,渲染评论列表 (1)数据格式如下 地址 /ap ...

  7. Vue(小案例_vue+axios仿手机app)_首页(底部导航栏+轮播图+九宫格)

    ---恢复内容开始--- 一.前言                        1.底部导航(两种做法)                                         2.轮播图 ...

  8. Vue(小案例_vue+axios仿手机app)_购物车(计算商品总金额)

    一.前言                 1.计算总金额                 2.点击删除按钮,删除对应的商品信息                 3.当还没结算的时候,当用户跳到其他页面 ...

  9. Vue(小案例_vue+axios仿手机app)_Vuex优化购物车功能

    一.前言         1.用vuex实现加入购物车操作 2.购物车详情页面          3.点击删除按钮,删除购物详情页面里的对应商品 二.主要内容 1.用vuex加入购物车 (1)在src ...

随机推荐

  1. Linux简单配置SendMail发送邮件

    本文简单整理了一下如何在Linux服务器上安装.配置SendMail发送邮件的步骤,此文不是配置邮件服务器,具体测试环境为CentOS Linux release 7.2.1511 (Core) ,如 ...

  2. 【原】Java学习笔记004 - 运算符

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 运算符:对常量 或 ...

  3. oracle nvl2函数

    nvl2(v1, v2, v3) 定义:如果v1为空,返回v3: 不为空,返回v2 nvl2要求v2,v3的类型一致,不一致会发生类型转换.问题:最终返回值类型是v2的类型还是v3的类型? 看题目:n ...

  4. 容易被误读的IOSTAT

    iostat(1)是在Linux系统上查看I/O性能最基本的工具,然而对于那些熟悉其它UNIX系统的人来说它是很容易被误读的.比如在HP-UX上 avserv(相当于Linux上的 svctm)是最重 ...

  5. 网络流问题 P2763 试题库问题

    题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. ...

  6. Python 隔离环境 virtualenv

    1) 安装 $ sudo pip3 install virtualenv 2) 创建并进入工程目录,例如 myproject $ mkdir myproject $ cd myproject 3) 在 ...

  7. c# 7.0 6.0 新语法

    1.参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/csharp-7?tutorial-step=5 ...

  8. 网易云歌词解析(配合audio标签实现本地歌曲播放,歌词同步)

    先看下效果 github上做的一个音乐播放器: https://github.com/SorrowX/electron-music 中文歌曲 英文歌曲(如果有翻译的中文给回返回出去) 韩文歌曲 来看下 ...

  9. HIT创业感言:只有长寿的企业才有持续价值

    导语:本文将讨论医疗信息化行业中的创业和企业经营问题.笔者创立的南京都昌科技有限公司专做电子病历编辑器控件,已经有3年多,期间辛苦多年,但因为医疗信息化行业的整体发展良好,也能有所成就了,不过革命尚未 ...

  10. 移除Windows图标快捷方式小箭头

    以管理员身份运行cmd,输入 reg delete "HKEY_CLASSES_ROOT\lnkfile" /v IsShortcut /f & taskkill /f / ...