vue中如何实现发表提交后默认到最新的数据显示

2023年6月26日13:08:47

一、发表提交后默认到最新的数据显示

  1. data 中定义 pageIndex,默认为1,默认展示第一页数据。comments,默认为空,所有的评论数据。msg,默认为空,评论输入的内容,代码如下所示:
data() {
    return {
        pageIndex: 1, 
        comments: [], 
        msg: '' 
    }
}
  1. 在文本框 textarea 中,通过 v-model 进行双向数据绑定 msg。同时,在发表评论按钮中,通过 click 绑定 postComment 事件,代码如下所示:
    <h3>发表评论</h3>
    <hr/>
    <textarea placeholder="请输入要吐槽的内容,最多120个字" maxlength="120" v-model="msg"></textarea>
    
    <mt-button type="primary" size="large" @click="postComment">发表评论</mt-button>
  1. methods 中,定义 postComment 方法,发布评论。首先需要校验评论的内容是否为空,通过trim() 方法可以去除空格。如果this.msg.trim().length的值为0,说明评论的内容为空。在发布评论的时候,需要调用对应的接口信息,this.$route.params.id可以获取传递过来的 id 值,携带的参数是评论的内容,通过之前双向数据绑定的 msg 值去除空格。如果响应的状态码为 0,说明响应成功。我们可以拼接出一个最新的评论对象,然后调用数组的 unshift 方法, 把最新的评论,追加到 datacomments 的开头,然后再将 msg 的值设置为空,这样就能完美实现刷新评论列表的需求,发表提交后默认到最新的数据显示,代码如下所示:
// 发布评论
postComment () {
    // 校验评论的内容是否为空
    if (this.msg.trim().length === 0) {
        return Toast('评论的内容不能为空!')
    }

    // 发表评论
    this.$http.post('/api/postcomment/' + this.$route.params.id, {
        content: this.msg.trim()
    }).then((res) => {
        if (res.data.status === 0 ) {
            // 拼接出一个评论对象
            var cmt = {
                user_name: '匿名用户',
                add_tiem: Date.now(),
                content: this.msg.trim()
            };
            
            // 将最新提交的评论信息添加到所有的评论数据中,保证是最新最先展示的
            this.comments.unshift(cmt)
            this.msg = ''
        }
    })

}

  • 作者:殇陌离tk
  • 原文链接:https://blog.csdn.net/weixin_42614080/article/details/105424667
    更新时间:2023年6月26日13:08:47 ,共 1088 字。