vue里嵌套对象渲染报错的解决方法

在页面渲染时,我的数据是嵌套的对象,如下图:


页面运行时可以正常显示,可是可以看到控制台还是会报错,如下图:

最后发现只需在页面显示时加一个判断就不会再报错了,如下图:

具体是什么原因导致的呢?

created的数据肯定是还没获取到的,如果你的json是只嵌套一层,因为data你已经定义好了,所以data.a不会出现data undefined的错误,只是找不到data.a的数据,当你异步请求完之后,会自动更新。但是如果你的json是嵌套两层,比如data.a.b,那么当你调用data.a.b的时候,因为data.a还没有定义,所以就会报错说Cannot read property 'b' of undefined

我们可以试试,在mounted里面去打印这个对象,会发现打印出来是空的,这也就是页面加载的时候,数据还没有传过来,但是这时候我们已经开始在使用了,所以会报undefined的错误,当数据的值传过来的时候,页面找到这个数据,并渲染上去,所以我们看到的页面又是正常了。因此,我们加上一个判断,当数据没有拿到时,页面不会去渲染,等拿到数据后页面再渲染,此时我们看到页面显示正确,同时又不会报错了。