vue 请求嵌套_vue2 ajax异步请求,数据嵌套层数过多,导致页面无法正常通过数据驱动渲染...

初入门vue2,在开发项目过程中因为用到了vue-echarts-v3,涉及图表的数据,难免数据就有过多的层数,导致出现了这么一个坑,其实归根结底是自己没有按照vue2官方的方法进行对象数据修改。

首先,数据结构大致是这样的:

echartData {

data1 {

name:'line',

series: [{

name:'',

}

lineData: {

title:'',

captionOption: {

isShow:true,

countBoxs: [{

name:'',

value:'',

date:''}]

},

},

legend: {

data: ['xxx','xxx']

}

}

}

之前也有接触过类似的数据驱动修改视图渲染的写法,都是类似这回项目里一样写的,通过data.attr = xxx这种格式去进行修改,console.log输出时发现数据确实已经得到了修改。

但是为什么,就是不渲染?!

后来查阅了官方的说明,以及他人踩坑的经过,终于得到答案,最终写法如下:

that.$set(that.echartData,'data1',{

name:'line',

series: [{

name:'xxx',

data: bandwidthData.rows.map(item=>item.text)

},{

name:'xxx',

data: bandwidthData.cp_rows.map(item=>item.text)

}],

xAxis: {

data: bandwidthData.rows.map(item=>item.time)

},

lineData: {

title:'',

captionOption: {

isShow:true,

countBoxs: [{

name:'',

value: bandwidthData.peakValue,

date: bandwidthData.peakTime

}, {

name:'',

value: bandwidthData.totalFlow,

}, {

name:'',

value:'',

}]

},

},

legend: {

data: ['xxx','xxx']

}

});

请求是通过axios封装的ajax请求发出的,这个与造成本坑的原因无关,我们可以暂且不论。

代码中的that,是通过var that = this;在ajax请求发出前声明的:

var that = this;

that.$ajax({......})

然后就是这个that.$set,网上资料有这么个说法,当数据不是data的第一层,而是包了几层之后,=赋值是不会触发页面渲染的,要用$set(obj,key,val),查阅了官方文档,得出了最后的解决方法,也就是上面的代码。

结论:数据层数不宜深,情到深处快换人(换方法)= =

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值