注意:
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>
效果: