在template模板{{}}里面调用类似于js函数split()、slice()、replace()的疑问

在调用了后台数据接口之后忘记在js代码里面对后台返回的日期格式进行处理,然后脑子短路就直接在<template>模板里面的对数据进行格式转换,split和replace可以把数据转化为我想要的格式,但有一个疑问,为什么数据都转化成功了,控制台还是报错了,报的错还是split和replace函数未定义的错误,我的理解是既然未定义,为什么split和replace还是起作用了?
这是在template模板里面做格式转换的代码,格式转化了,但报错了

<div class="useDate">*有效期至{{conponData.endTime.split(' ')[0].replace(/(\d{4})-(\d{2})-(\d{2})/g,'$1年$2月$3日')}}</div>

这是在接口方法里面做格式转化,一般也是这样做处理,所以就没报错

export async function getDetail(pkId) {
    const recData = await jsonAxios(CONPONDETAIL, {
        pkId: pkId
    })
    if (recData.status == 10000) {
        _this.conponData = recData.data;
        _this.description = _this.conponData.description.split('\n');
        _this.conponData.endTime = _this.conponData.endTime.split(' ')[0].replace(/(\d{4})-(\d{2})-(\d{2})/g,'$1年$2月$3日');
    }
    console.log(recData);
}

图片描述

图片描述

阅读 2.7k
2 个回答

页面初始化的时候,conponData为空对象,endTime为undefined,所以找不到split函数,并抛出错误

新手上路,请多包涵

我之前也碰到这样问题,后来理解了
初始化时候conponData = {}空对象里面的endTime是undefined

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