vue 出现 undefined

数据是这样的

{
    "id" : 1,
    "name" : "testName",
     "info" : {
         "face" : "xxxxxxx,jpg"
         "mobile" : "xxxxxx"
     }
}

在模板中

{{user.info.mobile}} //这样就报错undefined

只能写成

{{user.info ? user.info.face: ''}}
{{user.info ? user.info.mobile : ''}}  //这样就没毛病了

这样写好麻烦啊 有其他办法吗?

阅读 5.5k
5 个回答

出现这个原因,是因为请求是异步的吧
要么,数据初始化,data的

return{
    {
    "id" : "",
    "name" : "",
     "info" : {
         "face" : ""
         "mobile" : ""
     }
    }
} 

里面定义个初始化内容,要么在template模版里面 v-if,数据拿到再渲染
第一种会闪一下空,然后数据再渲染,第二种是完全等数据下来再渲染

没有太好的办法吧,你可以写一下方法单独处理这一块的逻辑,封装一下

貌似不支持这种多级对象,
created函数 里面重新赋值下
this.info = this.user.info
html:
{{info.name}}

模板渲染时还没有数据,一般解决办法就是在这个dom上加个v-if,反正data是响应式的

请求是异步的,需要在页面的data里做数据初始化

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题