博客评论后重加载评论

This commit is contained in:
2024-09-01 15:47:10 +08:00
parent d3106a6576
commit 0d33e18a88
3 changed files with 16 additions and 5 deletions

View File

@@ -1,8 +1,9 @@
<script setup> <script setup>
import { request } from '@/lib/request'; import { request } from '@/lib/request';
import { computed, onMounted, reactive, ref } from 'vue'; import { computed, onMounted, reactive, ref, watch } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { timestampToString } from '@/lib/timestampToString'; import { timestampToString } from '@/lib/timestampToString';
const model = defineModel();
const route = useRoute() const route = useRoute()
const bloguuid = route.params.uuid; const bloguuid = route.params.uuid;
const blogCommentList = reactive([]); const blogCommentList = reactive([]);
@@ -26,6 +27,7 @@ const loadComment = async () => {
try { try {
let commentRes = await request.get(`/blogComment?bloguuid=${bloguuid}`); let commentRes = await request.get(`/blogComment?bloguuid=${bloguuid}`);
if (commentRes.code == 0) { if (commentRes.code == 0) {
blogCommentList.splice(0, blogCommentList.length);
blogCommentList.push(...commentRes.data); blogCommentList.push(...commentRes.data);
loadStatus.value = 1; loadStatus.value = 1;
} else { } else {
@@ -36,6 +38,12 @@ const loadComment = async () => {
loadStatus.value = -1; loadStatus.value = -1;
} }
} }
watch(model, (newValue, oldValue) => {
if (newValue) {
loadComment();
}
})
</script> </script>
<template> <template>
<el-divider></el-divider> <el-divider></el-divider>

View File

@@ -1,12 +1,13 @@
<script setup> <script setup>
import { Star, Edit, StarFilled } from '@element-plus/icons-vue' import { Star, Edit, StarFilled } from '@element-plus/icons-vue'
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import { ref, onMounted, onUnmounted } from 'vue'; import { ref, onMounted, onUnmounted, defineEmits } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { request } from '@/lib/request'; import { request } from '@/lib/request';
import RotationVerification from '../Common/RotationVerification.vue'; import RotationVerification from '../Common/RotationVerification.vue';
const route = useRoute() const route = useRoute()
const bloguuid = route.params.uuid; const bloguuid = route.params.uuid;
const emit = defineEmits(['comment-success'])
const inputComment = ref('') const inputComment = ref('')
let inputCommentName = ''; let inputCommentName = '';
const toolBarVisible = ref(true); const toolBarVisible = ref(true);
@@ -71,6 +72,7 @@ const submitComment = async () => {
name: inputCommentName.trim() == '' ? '匿名' : inputCommentName.trim() name: inputCommentName.trim() == '' ? '匿名' : inputCommentName.trim()
}) })
if (commentRes.code == 0) { if (commentRes.code == 0) {
emit('comment-success');
return ElMessage.success('评论成功~'); return ElMessage.success('评论成功~');
} else { } else {
throw new Error(commentRes.message); throw new Error(commentRes.message);

View File

@@ -1,6 +1,6 @@
<script setup> <script setup>
import { request } from '@/lib/request'; import { request } from '@/lib/request';
import { onMounted, reactive, ref, nextTick } from 'vue'; import { onMounted, ref } from 'vue';
import { timestampToString } from '../lib/timestampToString' import { timestampToString } from '../lib/timestampToString'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import { Marked } from 'marked'; import { Marked } from 'marked';
@@ -14,6 +14,7 @@ const loadStatus = ref(0);// 0加载中 -1加载失败 -2文章不存在或不
const route = useRoute(); const route = useRoute();
const blogContent = ref(''); const blogContent = ref('');
const blogInfo = ref({}); const blogInfo = ref({});
const blogCommentReload = ref(false);
const marked = new Marked( const marked = new Marked(
markedHighlight({ markedHighlight({
@@ -66,9 +67,9 @@ onMounted(async () => {
<div v-html="blogContent" id="blogContentContainer"></div> <div v-html="blogContent" id="blogContentContainer"></div>
</div> </div>
<BlogComment v-if="loadStatus == 1" /> <BlogComment v-if="loadStatus == 1" v-model="blogCommentReload"/>
</div> </div>
<BlogContentToolBar /> <BlogContentToolBar @comment-success="blogCommentReload = true;"/>
</template> </template>
<style scoped> <style scoped>
.bcc { .bcc {