在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) },
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论