跑马灯效果——this的使用和计时器

注意:

1.VM机制,加载完页面后还持续监听data数据,一旦改变随之改变。是本地改变页面的基础,也是这个框架优点

2.了解在此机制中,在VM实例中,如果想要获取data中的数据,或者调用methods中的方法,要使用this关键字实现

3.ES6不是idea的默认规范,要调整。

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>   
    <script src="../lib/vue.js"></script>
</head>
<body>
      <div id="app">
          <input type="button" value="执行" v-on:click="start"></input>
          <input type="button" value="停止" v-on:click="stop"></input>
          
          <h3>{{ msg }}</h3>
      </div>

      <script>
          //注意:在VM实例中,如果想要获取data中的数据,或者调用methods中的方法,要使用this关键字实现
          //VM机制,加载完页面后还持续监听data数据,一旦改变随之改变
          var app = new Vue({
              el:'#app',
              data:{
                  msg:'每天起床第一句,燃烧我的卡路里~~',
                  intervalId: null
                  //初始的id将其设置为null,空    
                  
              },
              methods:{ //methods中可以实现ES6的写法,跟java中定义一个方法是一样的
                  start(){
                      if(this.intervalId !=null) return;
                      //执行一个监听器后,intervalID将被赋值,再次点击不会再次开启一个监听器
                      
                      this.intervalId = setInterval( () => {
                          var head = this.msg.substring(0,1);
                          var end = this.msg.substring(1);
                          //分别获取第一个字,和其他剩余所有的字,互换位置,达到将第一个字放在最后的效果
                          
                          this.msg = end + head;
                          //自动装箱和拆箱 
                      },200)   
                      //箭头效果解决低版本的this指向的问题,这里可以直接指向外部的vm实例,而不用再写 var _this=this    
                  },
                  stop(){ //停止计时器
                      clearInterval(this.intervalId);
                      this.intervalId = null;
                      //执行一次后,intervalId被赋值,停止后需要清除才能再次执行    
                  }
              }
          })
      </script>
</body>
</html>

效果:

猜你喜欢

转载自blog.csdn.net/qq_42036616/article/details/82798386