boyMiSen 2019-07-12 17:40 采纳率: 0%
浏览 1502

vue的渲染问题,渲染的时候说该列表的某个属性是null,但内容还是可以渲染出来。求优化。

问题是这样的,我在**vue**的**js data()**逻辑里命名了一个对象或者数组:**orderList:[]**,然后在**created()**的时候通过**axios**异步获取数据给它。
前端**template**里绑定该数组对象里的某些属性名,控制台console会报红色的该属性是**null**,但是前端可以显示内容。直接贴代码吧。

这是js:

    data () {
        return {
            orderList: {}
        }
    },

    created () {
        this.axios.get(thisUrl)
            .then(res => {
                res = res.data
                if(res.code === 0) {
                    this.orderList = res.data
                    console.log('orderList:', this.orderList);
                } else {
                    this.$notify(res.msg)
                }
            })
            .catch(err => {
                this.$notify('ERR: 获取订单详情失败,请稍后重试!')
            })
    },


这是前端template:

<span class="fontEllipsis fontColor">{{orderList.item_goods.summary}}</span>

报错截图:

图片说明

现在想到的两种方法就是:
1、orderList写成:

orderList:{
    item_goods:{
        summary
    }
}

这样的缺点是麻烦,而且后端的属性名要是一改其实这里还得改。

2、直接判断length:

<span v-if="orderList.length" class="fontEllipsis fontColor">{{orderList.item_goods.summary}}</span>

这样吧。。。又有页面样式的跳动,毕竟vif要重新渲染的。而且万一不是数组呢?万一后端给我个null呢?

问题和自己的两个解决方法就在这里,希望可以抛砖引玉,各位大神能给个更好的方法?本人有点强迫症,而且Android还好,但在ios系统会报错导致逻辑走不通页面不能显示。求指点。

  • 写回答

1条回答

  • zhshchilss 2019-07-31 11:16
    关注

    如果有可能为null,那涉及到调用没办法,都要判断

    let {orderList ={}} = this ;
    let {item_goods={}} = orderList ;
    return <span>{{item_goods.summary}}</span>
    

    或者

    return <span>{{orderList &&  orderList.item_goods && orderList.item_goods.summary}}</span>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog