当前位置 : 主页 > 网络编程 > JavaScript >

Vue(定时器)解决mounted不能获取到data中的数据问题

来源:互联网 收集:自由互联 发布时间:2021-04-05
vue中data定义 data() { return { isok:10,}} 在vue中使用定时器 如下 mounted是钩子函数 mounted(){ console.log(this.isok) //能获取isok 10 setInterval(function(){ console.log(this.isok) //不能获取 isok}, 3000); } 这是为什

vue中data定义

 data() {
  return {
  isok:10,
}
}
 

在vue中使用定时器 如下 mounted是钩子函数

mounted(){
 
 console.log(this.isok)  //能获取isok 10
 setInterval(function(){
 console.log(this.isok) //不能获取 isok
}, 3000);
 
}

这是为什么呢?

原因就是:定时器的this是指向 window的。

那有什么方法来解决这个问题呢?答案是有的,两种

第一种:

用箭头函数:箭头函数中的this指向是固定不变(定义函数时的指向),在vue中指向vue;

 mounted(){
 setInterval(()=>{ consolog.log(this.isok) }, 3000);
 }

第二种:

使用 var that = this ,就可以正常调用了。

 mounted(){
  var that=this;
  setInterval(()=>{
  console.log(that.isok)
  }, 3000);
 }

补充知识:vue 根据指定字段排序使用computed 方法

我就废话不多说了,大家还是直接看代码吧~

<div id="app">
   <ul>
    <li v-for="(stu,index) in students1">{{stu}}</li>
   </ul>
  </div>
  <script type="text/javascript">
   new Vue({
    el:"#app",
    data:{
     students:[
      {name:"小a",age:20},
      {name:"小b",age:21},
      {name:"小c",age:18},
      {name:"小d",age:19},
      {name:"小f",age:18}
     ]
    },
    computed:{
     students1:function(){
      return sortKey(this.students,'age')
     }
    }
   })
   function sortKey(array,key){
    return array.sort(function(a,b){
     var x = a[key];
     var y = b[key];
     return ((x<y)?-1:(x>y)?1:0)
    })
   }
  </script>

以上这篇Vue(定时器)解决mounted不能获取到data中的数据问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持易盾网络。

网友评论