第二章 Vue快速入门--10-11 跑马灯效果制作
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 7 <title>Document</title> 8 <!--1.导入Vue的包--> 9 <!-- <script src="./lib/vue-2.6.10.js"></script> --> 10 <script src=" https://cdn.jsdelivr.net/npm/vue"></script> 11 12 </head> 13 14 <body> 15 <!-- 2.创建一个要控制的区域 --> 16 <div id="app"> 17 <input type="button" value="浪起来" @click="lang"> 18 <input type="button" value="低调" @click="stop"> 19 <h4>{{ msg }}</h4> 20 </div> 21 22 23 <script> 24 //注意:在VM实例中,如果想要获取 data 上的数据,或者想要调用methods中的方法,必须通过this.数据属性名 或 this.方法名 来进行访问,这里的this,就表示 我们 new 出来的VM实例对象 25 var vm = new Vue({ 26 el:'#app', 27 data:{ 28 msg:'猥琐发育,别浪~~!', 29 intervalId:null //在data上定义 定时器Id 30 }, 31 methods:{ 32 //老写法: lang:function(){} 33 //es6写法 34 lang(){ 35 // console.log(this.msg) 36 // var _this=this 37 //=>箭头函数解决this指向的问题,箭头函数内部的this永远和箭头函数外部保持一致,外部的this指向VM实例,内部的this也是指向VM实例。箭头函数使内部的this指向外部的this 38 39 if(this.intervalId !=null) return; 40 this.intervalId= setInterval( () => { 41 // 获取到头的第一个字符 42 var start = this.msg.substring(0,1) 43 //获取到后面的所有字符 44 var end=this.msg.substring(1) 45 //重新拼接得到新的字符串,并赋值给 this.msg 46 this.msg=end+start 47 },400) 48 49 //主要:VM实例,会监听自己身上data 中所有数据的改变,只要数据一发生变化,就会自动把最新的数据,从data上同步到页面中去;【好处:程序员只需要关心数据,不需要考虑如何重新渲染DOM页面】 50 }, 51 52 stop(){ //停止定时器 53 clearInterval(this.intervalId) 54 //每当清除了定时器之后,需要重新把 intervalId 置为 null 55 this.intervalId=null; 56 } 57 } 58 }) 59 60 //分析: 61 //1. 给【浪起来】 按钮,绑定一个点击事件 v-on @ 62 //2.在按钮的时间处理函数中,写相关的业务逻辑:拿到msg字符串,然后调用字符串的substring来进行字符串的截取操作,把第一个字符截取出来,放到最后一个位置即可; 63 //3.为了实现点击下按钮,自动截取的功能,需要把 2 步骤中的代码,放到一个定时器中去; 64 </script> 65 </body> 66 </html>