UniApp中使用filters

2023-07-24 20:58:15 浏览数 (1)

本文以时间格式化为例,后端API接口常常返回给前端的是一个int时间戳,前端需要在显示的时候转换成2019-06-28格式。

首先在/libs/目录下新建common.js,并写入如下内容:

代码语言:javascript复制
let util = {};

util.formatDate = function (date, fmt) {
    if (/(y )/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear()   '').substr(4 - RegExp.$1.length));
    }
    let o = {
        'M ': date.getMonth()   1,
        'd ': date.getDate(),
        'h ': date.getHours(),
        'm ': date.getMinutes(),
        's ': date.getSeconds()
    };
    for (let k in o) {
        if (new RegExp(`(${k})`).test(fmt)) {
            let str = o[k]   '';
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : util.padLeftZero(str));
        }
    }
    return fmt;
};
util.padLeftZero = function (str) {
    return ('00'   str).substr(str.length);
};

export default util;

 然后在业务页面比如lists.vue里如下图所示调用:

代码语言:javascript复制
<template>
    <view>
        <view class="kx-list">
            <view
                class="item"
                :key="key"
                v-for="(item, key) in kx_list">
                <text class="title">
                    {{item.post_time| formatTime}}
                </text>
            </view>
        </view>
    </view>
</template>
<script>
    import common from '@/libs/common.js'
    export default {
        data() {
            return {
                kx_list: {
                                   }
            }
        },
        filters: {
            formatTime(time) {
                var date = new Date(time);
                return common.formatDate(date, 'yyyy-MM-dd hh:mm');
            }
        }
</script>

最终页面就会显示2019-06-28 12:00格式的时间,同理当我们需要给订单的状态1,2,3,4,5

等变量显示为待付款,待发货,待收货,待评价时也可以参考上面这样使用。

0 人点赞