一、学习目标

  • 使用网络请求进行前后端交互 (重点)
  • 理解钩子函数的作用  (难点)
  • 掌握Vue.js过滤器的使用方法
  • 了解Vue.js事件的深入用法  (重点)

二、仿写留言板

2.1、实现"显示评论"按钮的功能

  • 使用网络请求,请求"请求列表" 数据
  • 解析 "评论列表" 数据
  • 展示"评论列表的数据"

2.2、点击显示评论,显示数据

说明:当我们点击评论的时候,则显示相关数据,测试第三方接口:http://api.artgoer.cn:8084/artgoer/api/v1/user/324380/v3/topic/topicHomeByLabel?pageIndex=1&token=b544cd63-6d42-46fe-a96c-3cf96bae3113&topicId=62187

<body><div id="box"><button @click="search">显示评论</button><ul><li v-for="item in arr"><h4>{{ item.commentTxt }}</h4><p>{{ item.createAt | time }}</p></li></ul></div><script src="js/vue.js"></script><script src="js/vue-resource.js"></script><script>//定义过滤器
        Vue.filter('time',function(val){//只显示日期,不显示时间//方法:字符串的截取:substr(start,length)return val.substr(0,10);});var vm = new Vue({el: "#box",data: {arr: []},methods: {search: function(){this.$http.get("http://api.artgoer.cn:8084/artgoer/api/v1/user/324380" +"/v3/topic/topicHomeByLabel?pageIndex=1&" +"token=b544cd63-6d42-46fe-a96c-3cf96bae3113" +"&topicId=62187").then(function(res){//then()中如果只传入一个处理函数,那么默认是处理请求成功的情况//console.log(res.data);this.arr = res.data.data.commentList;})}}});</script>
</body>

显示评论

2.3、无需点击,自动显示评论

说明:因为我们再显示评论的时候,一般情况下不需要任何操作,自动显示评论,所以我们就应该在 vue 对象创建之前 就应该加载这部分数据,所以我们就会使用到 beforeCreate的钩子。所以优化后的代码,如下:

<body><div id="box"><button>显示评论</button><ul><li v-for="item in arr"><h4>{{ item.commentTxt }}</h4><p>{{ item.createAt | time }}</p></li></ul></div><script src="js/vue.js"></script><script src="js/vue-resource.js"></script><script>//定义过滤器
        Vue.filter('time',function(val){//只显示日期,不显示时间//方法:字符串的截取:substr(start,length)return val.substr(0,10);});var vm = new Vue({el: "#box",data: {arr: []},beforeCreate: function(){this.$http.get("http://api.artgoer.cn:8084/artgoer/api/v1/user/324380" +"/v3/topic/topicHomeByLabel?pageIndex=1&" +"token=b544cd63-6d42-46fe-a96c-3cf96bae3113" +"&topicId=62187").then( function(res){//then()中如果只传入一个处理函数,那么默认是处理请求成功的情况//console.log(res.data);this.arr = res.data.data.commentList;});}});</script>
</body>

页面数据自动加载

小结:

  • 使用网络请求进行前后端交互
  • 理解钩子函数的作用 (难点)
  • 账务Vue.js过滤器的使用方法

三、仿写百度搜索框

3.1、Vue中事件对象的获取

语法:

@click=fn($event)
$event: 对象

实例:

<body><div id="box"><!--传入事件对象$event--><div class="div1" @click="fn($event)"></div></div><script src="js/vue-resource.js"></script><script src="js/vue.js"></script><script>var vm = new Vue({el: "#box",data:{},methods: {fn: function(e){//e: event事件对象,e.clientX,e.clientY为 鼠标的坐标
                    console.log(e.clientX,e.clientY);}}});</script>
</body>

事件对象的获取

3.2、事件修饰符

概念:v-on指令提供了时间修饰符来处理DOM事件细节

按键修饰符:.enter,.up,.down 等等

prevent修饰符:阻止事件的默认行为

语法:

<input type="text" @keydown.up="fn()"  @keydown.down="fn2()"/>  //按键按下后执行的事件

具体使用:

<body><div id="box"><input type="text" @keydown.up="fn1()"/><input type="text" @keydown.down="fn2()"/><!--事件修饰符:vue中提供的处理DOM事件细节的方式按键修饰符:.up,.down,.ctrl,.enter,.space....语法:@click.修饰符='fn'--></div><script src="js/vue-resource.js"></script><script src="js/vue.js"></script><script>var vm = new Vue({el: "#box",data:{},methods: {fn1: function(){console.log("up");},fn2: function(){console.log("down");}}});</script>
</body>

事件修饰符

3.3、仿写百度搜索框和练习

① 搜索需求:实现搜索框的搜索功能

  • 对用户在输入框内输入的值进行双向数据绑定。
  • 点击 "搜索" 按钮,进行网络请求
  • 将请求会的数据在搜索框下进行展示

②练习需求:实现通过方向键控制搜索选项

  • 绑定上下方向键的处理函数
  • 对展示的数据进行样式绑定

<head><meta charset="UTF-8"><title>Title</title><style>.gary {background: #ccc;}</style>
</head>
<body><div id="box"><input type="text" v-model="wd" @keydown.up.prevent="up" @keydown.down="down"/><button @click="search">搜索</button><ul><li v-for="(item,index) in arr" :class="{gary: index==nowIndex}">{{ item }}</li></ul><!--所有的li数据,都是自己的index我们可以定义一个nowIndex来记录当前被选中的下标比较index 和 nowIndex 的关系如果 index==nowIndex,那么该条件数据是被选中的数据,也就是说北京变为灰色--></div><!--导入vue-resource.js,一定要在vue.js之后导入,不然会报错--><script type="text/javascript"  src="js/vue.js"></script><script type="text/javascript" src="js/vue-resource.js"></script><script>var vm = new Vue({el: "#box",data: {arr: [],wd: '',base_url: "https://sug.so.360.cn/suggest",nowIndex: -1},methods: {search: function(){this.$http.jsonp(this.base_url,{params: {word: this.wd}},{emulateJSON:true}).then(function(res){this.arr = res.data.s;});},up: function(){this.nowIndex--;if(this.nowIndex < 0){this.nowIndex = this.arr.length -1;}},down: function(){this.nowIndex++;if (this.nowIndex > this.arr.length-1){this.nowIndex = -1;}}}});</script>
</body>

仿写百度搜索框练习

这里面用到了一些事件修饰符。

3.4、事件执行机制

事件执行机制:

  • 根 -> 元素1 -> 元素2 -> 事件源(target)
  • 先捕获,后冒泡
  • 捕获:从根 到 事件源
  • 冒泡: 从事件源 到 根

示例:

<head><meta charset="UTF-8"><title>Title</title><style>div {width: 100px;height: 100px;}.div1 {background: pink;padding: 50px;}.div2 {background: yellow;}</style>
</head>
<body><!--事件执行机制:根 -> 元素1 -> 元素2 -> 事件源(target)先捕获,后冒泡捕获:从根 到 事件源冒泡: 从事件源 到 根--><div id="box"><div class="div1" @click="fn1"><div class="div2" @click="fn2"></div></div></div><script src="js/vue.js"></script><script>var vm = new Vue({el: "#box",data: {},methods: {fn1: function(){console.log("fn1");},fn2: function(){console.log("fn2");}}});</script>
</body>

事件执行机制

结果:

>>>fn2
>>>fn1

结果得出:事件执行是 从 源 到 根依次执行,那我执行事件源,不想执行 除事件源之外的 事件,如下:stop:阻止冒泡

<div class="div2" @clicl.stop="fn2"></div>

更多事件处理:

事件处理:https://cn.vuejs.org/v2/guide/events.html

事件修饰符:https://cn.vuejs.org/v2/guide/events.html#事件修饰符

按键修饰符:https://cn.vuejs.org/v2/guide/events.html#按键修饰符

四、小结

  • 重点:能够使用网络请求进行前后端交互
  • 难点: 理解钩子函数的作用
  • 注意事项:修饰符可以串联使用:@click.prevent.stop="fn"。

转载于:https://www.cnblogs.com/zhangqigao/p/9604070.html

第5章-Vue.js交互及生命周期练习相关推荐

  1. Vue.js函数的生命周期

    一.vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 二.vue.js里面的钩子函数 钩子函数 昰什么 相当于回调函数 即让开发者在特定的时候 执行自定义逻辑 1.自定义 ...

  2. 【Vue.js学习】生命周期及数据绑定

    一.生命后期 官网的图片说明: Vue的生命周期总结 var app = new Vue({el:"#app", beforeCreate: function(){console. ...

  3. vue.js框架的生命周期:常用钩子函数

    //组件实例化之前执行的函数 beforeCreate:function () { alert("组件实例化之前执行的函数") }, //组件实例化完毕执行的函数 created: ...

  4. Vue 进阶系列丨生命周期

    Vue 进阶系列教程将在本号持续发布,一起查漏补缺学个痛快!若您有遇到其它相关问题,非常欢迎在评论中留言讨论,达到帮助更多人的目的.若感本文对您有所帮助请点个赞吧! 2013年7月28日,尤雨溪第一次 ...

  5. day4 vue 学习笔记 组件 生命周期 数据共享 数组常用方法

    系列文章目录 day1学习vue2笔记 vue指令 day2 学习vue2 笔记 过滤器 侦听器 计算属性 axios day3 vue2 学习笔记 vue组件 day4 vue 学习笔记 组件 生命 ...

  6. Vue之MVVM、Vue实例对象、生命周期

    1.初识Vue Vue是一套用于构建用户界面的渐进式框架,Vue 被设计为可以自底向上逐层应用,Vue的核心是只关注视图层(如何理解),不仅易于上手,还便于与第三方库或既有项目整合. 渐进式框架:渐进 ...

  7. Vue 进阶语法和生命周期

    文章目录 Vue 进阶语法和生命周期 16.Vue:生命周期[了解] 17.Vue:computed计算属性 18.Vue:watch监控属性 Vue 进阶语法和生命周期 a. 每个 Vue 应用都是 ...

  8. vue手机端回退_从外链回退到vue应用不触发生命周期、beforeRouterEnter等钩子函数的问题...

    在iphoneX及以上版本从外链回退不触发事件,7P,7没发现这个bug 安卓上自测没有发现这个问题 最近做项目中发现了一个问题,iphoneX及以上版本从当前vue应用中跳转到外部链接然后在回退到v ...

  9. 第9章 maven的插件和生命周期

    第9章 maven的插件和生命周期 本章介绍了maven生命周期.插件以及如何配置插件 9.1 生命周期 一般的项目都会经历这几个步骤:编译,测试,打包,部署,有些公司是手动方式,有些是自动化脚本方式 ...

最新文章

  1. 前端计划——面试题总结-CSS篇
  2. ELK系统之logstash问题:retrying failed action with response code: 429
  3. 大家都在聊的人工智能,究竟是什么?
  4. Elasticsearch架构原理
  5. GitHub初次使用记录(一)
  6. C# - 自动生成分页存储过程
  7. Kali Linux 网络扫描秘籍 第一章 起步(一)
  8. MySQL(三) —— 约束以及修改数据表
  9. 《阿里巴巴中国总裁叶朋:B2B从1.0向2.0的升级》阅读整理
  10. java序列化和反序列化对象_java中的序列化与反序列化,还包括将多个对象序列化到一个文件中...
  11. 从国产手机自强复盘小米十年
  12. linux rm 中文文件夹,在Linux下删除文件及文件夹(rm)
  13. 航空研发软件移机时使用符号连接节省Windows系统C盘空间占用
  14. 影片推荐:《机械姬》
  15. QQ相关(一)【导出所有QQ好友】
  16. HDU6411 带劲的and和
  17. 微信小程序趋势及前景,详细的Android学习指南
  18. Unity_ClickToShow_FadeInAndOut
  19. 用Python做一个好玩的朋友圈九宫格抽奖
  20. IOS 蓝牙设备断开时间内进行自动链接

热门文章

  1. ONE- Open Navigator Engine 开放式浏览器引擎
  2. VC6中用DOM遍历网页中的元素
  3. jenkins报错Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password) 的处理
  4. python各种模块的使用
  5. 运行android模拟器,emulator: ERROR: x86 emulation currently requires hardware acceleration!
  6. [Tyvj 1729] 文艺平衡树
  7. JS模式--职责链模式
  8. ELASTIC的备份与恢复
  9. Knockout v3.4.0 中文版教程-9-计算监控-API参考
  10. Netty系列之一开始使用