Vue使用mounted和created时,this无法指向data中的数据问题

 更新时间:2023年07月04日 08:38:19   作者:Mboss76  
这篇文章主要介绍了Vue使用mounted和created时,this无法指向data中的数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用mounted和created,this无法指向data中的数据问题

问题描述

预想在Vue创建页面时接收后端数据,然后渲染到页面。

使用data进行数据绑定,可是数据修改不成功。

//想要修改data中的gameNum
data(){
    return{
      allGames:'',
      gameNum:0
    }
  }
mounted() {
    axios.post('http://localhost:3000/allGames').then(function (response){
      console.log(response.data.gameNum);//先输出响应回来的gameNum
      this.gameNum=response.data.gameNum;//赋值给data中的gameNum
      console.log(this.gameNum);//然后输出data中的gameNum
      }}

结果如下:

控制台只输出了响应回来的gameNum,并且报错this.gameNum没有找到

控制台只输出了响应回来的gameNum,并且报错this.gameNum没有找到!

问题分析

最开始的理解中this.gameNum指的是Vue中的数据gameNum,事实并不如此,这里的this代指window对象而不是Vue对象,所以真正找的是window对象下的gameNum,但是window下没有gameNum,所以就报错了。

解决办法

解决办法很简单,把指向vue对象保存给一个变量that,在后面引用that来修改数据即可。

mounted() {
    let that=this;//将vue对象的引用保存在that中
    axios.post('http://localhost:3000/allGames').then(function (response){
      console.log(response.data.gameNum);
      that.gameNum=response.data.gameNum;//使用that来指向vue
      console.log(that.gameNum);
    }}

控制台输出了正确结果:

在这里插入图片描述

Vue中created、mounted等方法整理

  • created:html加载完成之前,执行。执行顺序:父组件-子组件
  • mounted:html加载完成后执行。执行顺序:子组件-父组件
  • methods:事件方法执行
  • watch:watch是去监听一个值的变化,然后执行相对应的函数。
  • computed:computed是计算属性,也就是依赖其它的属性计算所得出最后的值
export default {
     name: "draw",
     data(){      // 定义变量source        
       return {
         source:new ol.source.Vector({wrapX: false}),
       }
     },
    props:{ //接收父组件传递过来的参数
      map:{
        //type:String
      },
    },
mounted(){   //页面初始化方法
    if (map==map){
    }
    var vector = new ol.layer.Vector({
      source: this.source
    });
    this.map.addLayer(vector);
  },
  watch: {   //监听值变化:map值
    map:function () {
      console.log('3333'+this.map);
      //return this.map
      console.log('444444'+this.map);
      var vector = new ol.layer.Vector({
        source: this.source
      });
      this.map.addLayer(vector);
    }
  },
  methods:{   //监听方法  click事件等,执行drawFeatures方法
       drawFeatures:function(drawType){}
}
 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue项目使用websocket技术解读

    vue项目使用websocket技术解读

    文章介绍了WebSocket的出现背景、特点以及在Vue项目中的应用方法,WebSocket是一种在单个TCP连接上进行全双工通信的协议,适合实时通信场景,在Vue项目中使用WebSocket时,需要注意浏览器兼容性、连接与断开时机以及后端接口的配置
    2025-12-12
  • Vue2.0点击切换类名改变样式的方法

    Vue2.0点击切换类名改变样式的方法

    今天小编就为大家分享一篇Vue2.0点击切换类名改变样式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 解决vue 打包发布去#和页面空白的问题

    解决vue 打包发布去#和页面空白的问题

    今天小编就为大家分享一篇解决vue 打包发布去#和页面空白的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue2从template到render模板编译入口详解

    vue2从template到render模板编译入口详解

    这篇文章主要为大家介绍了vue2从template到render模板编译入口详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • vue router 配置路由的方法

    vue router 配置路由的方法

    这篇文章主要介绍了vue router 配置路由的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • vue递归组件实战之简单树形控件实例代码

    vue递归组件实战之简单树形控件实例代码

    这篇文章主要介绍了vue递归组件实战之简单树形控件的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 3分钟读懂移动端rem使用方法(推荐)

    3分钟读懂移动端rem使用方法(推荐)

    这篇文章主要介绍了rem使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 使用Vue CLI创建typescript项目的方法

    使用Vue CLI创建typescript项目的方法

    这篇文章主要介绍了使用Vue CLI创建typescript项目的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • vuex实现购物车功能

    vuex实现购物车功能

    这篇文章主要为大家详细介绍了vuex实现购物车功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • vue3中使用print-js组件实现打印操作步骤

    vue3中使用print-js组件实现打印操作步骤

    文章介绍了在Vue 3中使用print-js组件实现打印操作的步骤,包括安装依赖、创建打印组件和处理打印预览界面,文章还提到打印预览界面的样式调整对打印效果的影响,并展示了HTML展示和打印预览效果,最后,文章鼓励读者继续浏览相关文章并支持脚本之家
    2025-02-02

最新评论