vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > 在data定义变量后依旧报undefined

vue在data中定义变量后依旧报undefined的解决

作者:weixin_43939111

这篇文章主要介绍了vue在data中定义变量后依旧报undefined的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

在data定义变量后依旧报undefined

之前跑的好好项目突然data中报undefined,在mounted打印也出不来。

最后排查,还是个人粗心问题:

变量太多,自己多加变量时忘了赋值,导致整个运行报错。

data(){
	return {
		a:"信息1",
		b:"信息2",
		c
	}
},
mounted(){
	console.log(this.a)//undefined
}

如上代码,虽然我在末尾加变量,es6语法会默认cc:c,在编译器里认通过。

但是,c没有初始值卡住之后会影响其他data变量的获取,打印ab的值都是undefined

vue data定义的变量使用另一变量

在写代码的时候,遇到一个问题,我想使用data里面的一个变量,赋值给data里面的另一个变量。

直接赋不行 latitude: latitude, 不行,latitude: this.latitude, 也不行,上网查了一下,可以通过computed和mounted来实现,成功了。

data() {
    return {
      longitude: 120.42,
      latitude: 36.09,
      covers: [
        {
          // latitude: latitude, 不行
          // latitude: this.latitude, 也不行
          // latitude: 0,
          // longitude: 0,
          iconPath: '../../static/logo.png',
          width: 25,
          height: 25
        }
      ],
    };
  },

方法一:computed

注释的部分为其它的方法。

computed: {
    // computeLon(){
    //   return this.covers[0].longitude = this.longitude;
    // },
    // computeLat(){
    //   return  this.covers[0].latitude = this.latitude;
    // }
    computeLonLat(){
      // this.covers[0].longitude = this.longitude;
      // this.covers[0].latitude = this.latitude;
      this.$set(this.covers[0], 'longitude', this.longitude);
      this.$set(this.covers[0], 'latitude', this.latitude)
      return
    }
  },

方法二: mounted

mounted() {
    this.$set(this.covers[0], 'longitude', this.longitude);
    this.$set(this.covers[0], 'latitude', this.latitude)
  },

总结

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

您可能感兴趣的文章:
阅读全文