diff --git a/app/pages/@[publicSlug]/posts/index.vue b/app/pages/@[publicSlug]/posts/index.vue index bfb9621..5c6d830 100644 --- a/app/pages/@[publicSlug]/posts/index.vue +++ b/app/pages/@[publicSlug]/posts/index.vue @@ -61,7 +61,6 @@ const selectedTags = ref( : [], ) const tagMode = ref(route.query.tagMode === 'and' ? 'and' : 'or') -const availableTags = ref([]) const tagModeItems = [ { label: '任一命中 (OR)', value: 'or' }, { label: '全部命中 (AND)', value: 'and' }, @@ -98,12 +97,13 @@ const { data, pending, error } = await useAsyncData( { watch: [slug, page, selectedTags, tagMode] }, ) -watch( - () => data.value?.availableTags, - () => { - availableTags.value = data.value?.availableTags ?? [] - }, -) +const availableTags = computed(() => { + const byApi = data.value?.availableTags ?? [] + const byItems = (data.value?.items ?? []) + .flatMap(item => item.tags ?? []) + .filter(Boolean) + return [...new Set([...byApi, ...byItems])] +}) watch( () => [route.query.tags, route.query.tagMode] as const, @@ -166,39 +166,39 @@ usePageTitle(() => { class="my-6" />