• Vue---记一次通过{{}}获取json数据-页面渲染不出来的坑


    前两天干活儿的时候碰到一个Vue的问题,让我这个菜鸡完全摸不到头脑,需求如下:前端页面点击表格中的某一行的详情按钮,会弹出一个Dialog,然后Dialog中有选项卡,选项卡中再有具体的table来展示详细的信息,根据id来关联查询其他表给出详细信息。

    由于关联别的表的时候,id有的是别的表的主键,有的不是。是主键的话查询出来的是一个实例对象,非主键的话查询出来的是一个list,不管是实例对象和list,后台我用的map来将他们都put了进去。

    map.put("video",videoEntity);
    map.put("videoList",videoList);
    return R.ok().put("data", map);

    然后后台发完请求,开开心心的去接了数据:

    1 //vue中设置data变量
    2 detialData{},
    3 
    4 //方法中接收返回数据
    5 if(res.code === 0){
    6   this.detialData = res.data;
    7 }

    下面我就在table中展示了数据:

     1 <table class="el-table el-table--fit el-table--border table-detail">
     2     <tbody>
     3         <tr>
     4             <td class="row-title">视频id</td>
     5             <td>{{detailData.video.videoId}}</td>
    10         </tr>
    11     </tbody>
    12 </table>

    然后我发现刷新后前端直接渲染不出页面了:

    后台没有报错,而且前端数据已经拿到了,也没有报错,那么问题出在哪里了呢?于是我确定了是前端的问题,一步一步确认下来,我发现把videoId去掉以后,前端可以正常渲染页面,而且Dialog中可以展示数据的,但是展示的是一个实例对象,不是我想要的对象的属性:

    然后,我没有刷新页面,在这个Dialog中,我又把videoId属性加上了:

    id展示出来了?!wtf???此时我一脸懵逼,最后我在定义detailData的地方加上了video对象,这个key:

    1 detailData: {
    2     video: {},
    3     videoList:[],
    4 },

    好了!问题解决了!

    教训:以后展示json数据中对象的属性的时候,一定要定义好对象!

    我在想,原因在哪?如果我不定义这个video,Vue就监听不到嘛?

  • 相关阅读:
    微服务:整合 Spring Cloud Eureka
    java连接oracle数据库时报错ORA-12505
    亲测可用转IntelliJ IDEA 2018.3.4永久激活(破解)
    MyEclipse中打开*.js文件时默认为UTF-8编码格式的设置
    linux yum安装lsof命令
    转:Tomcat 7.0配置SSL的问题及解决办法
    Java实现ping功能的三种方法及Linux的区分
    [linux]文件系统损坏,linux启动时 checking filesystems fail
    redhat7下mysql5.7.12重启电脑后起不来问题
    [转]Linux下彻底卸载mysql详解
  • 原文地址:https://www.cnblogs.com/ailanlan/p/12068221.html
Copyright © 2020-2023  润新知