You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js 使用搜索栏过滤分页文章无返回结果问题求助

问题原因

问题由两个核心错误导致:

  • 过滤逻辑语法错误
    你在计算属性filteredArticles中直接对item对象调用includes()方法,该方法仅支持字符串、数组类型调用,对象调用会直接报错或永远返回false,最终过滤结果永远是空数组,所以页面没有内容渲染。同时你没有指定要匹配的字段(标题/联系方式),自然无法实现搜索效果。
  • 分页插件配置不匹配
    你使用的vue-paginate插件要求分页名称全局统一:注册的分页配置、<paginate>组件的name和list属性、<paginate-links>的for属性、paginated()方法的入参必须完全一致。你只修改了paginated()的入参,其他配置还绑定的是原来的items,插件无法识别filteredArticles作为分页源。
修正方案

你需要同步修改过滤逻辑和分页配置,同时可以加大小写不敏感匹配优化搜索体验,完整修正代码如下:

<template>
  <div id="app">
    <div class="search-wrapper">
      <input type="text" 
        class="search-bar" 
        v-model="search"
        placeholder="Search in the articles"/>
    </div>

    <!-- 分页组件的name、list属性同步改为filteredArticles -->
    <paginate ref="paginator" class="flex-container" name="filteredArticles" :list="filteredArticles">
      <li v-for="(item, index) in paginated('filteredArticles')" :key="index" class="flex-item">
        <div id="image"><img :src="item.image && item.image.file" /></div>
        <div id="date">{{ item.pub_date }}</div>
        <div id="title"> {{ item.title }}</div>
        <div class="article">{{item.details_en}}</div>
      </li>
    </paginate>

    <!-- 分页链接的for属性同步改为filteredArticles -->
    <paginate-links for="filteredArticles" :limit="2" :show-step-links="true"></paginate-links>
  </div>
</template>
    
<script>
import axios from "axios";

export default {
  data() {
    return {
      items: [],
      // 分页注册名称改为filteredArticles
      paginate: ["filteredArticles"],
      search:'',
    };
  },
  created() {
    this.loadPressRelease();
  },
  methods: {
    loadPressRelease() {
      axios
        .get(`https://zbeta2.mykuwaitnet.net/backend/en/api/v2/media-center/press-release/?page_size=61&type=5`)
        .then((response) => {
          this.items = response.data.results;
        });
    },
  },
  computed:{
    filteredArticles() {
      const searchTerm = this.search.trim().toLowerCase()
      // 无搜索词时返回全部列表
      if (!searchTerm) return this.items
      // 匹配标题和你对应的联系方式字段,示例假设联系方式字段为contact,可替换为你实际的字段名
      return this.items.filter(item=>{
        return item.title.toLowerCase().includes(searchTerm) 
        // 如需匹配联系方式去掉下面注释,替换为实际字段名
        // || item.contact.toLowerCase().includes(searchTerm)
      })
    }
  }
};
</script>

内容的提问来源于stack exchange,提问作者Balazs Kelemen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:54:03