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)
},总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- vue项目引入百度地图BMapGL鼠标绘制和BMap辅助工具
- 解决Vue使用百度地图BMapGL内存泄漏问题 Out of Memory
- vue中报错“error‘xxx‘ is defined but never used”问题及解决
- Vue-cli3 $ is not defined错误问题及解决
- 解决Vue控制台报错Failed to mount component: template or render function not defined.
- vue报错Cannot read properties of undefined (...)类型的解决办法
- 完美解决vue引入BMapGL is not defined的问题
