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语法会默认c
为c:c
,在编译器里认通过。
但是,c
没有初始值卡住之后会影响其他data变量的获取,打印a
、b
的值都是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) },
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。