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

Laravel分页数据通过Axios传递至Vue组件的显示问题求助

解决Laravel分页数据在Vue中显示的问题

问题根源

Laravel的paginate()返回的是一个包含数据数组和分页元信息的对象(结构为{ data: [...], total: ..., links: ... }),你之前的两种写法都没处理好初始值和完整数据的保存:

  • 直接循环allActivities.data但未设置初始值,页面刷新时请求还未完成,allActivities是undefined,访问.data会触发找不到item.id的错误
  • 赋值response.data.data仅保存了数据数组,分页元信息自然丢失

正确修改方式

1. 给Vue数据添加初始值

在Vue组件的data中初始化allActivities为包含空数组的对象,避免页面加载时的undefined报错:

data() {
    return {
        allActivities: { data: [] }
    }
}

2. 修改模板的循环对象

模板里循环allActivities.data,同时保留完整的分页对象:

<ul role="list" class="space-y-4">
    <li
        v-for="item in allActivities.data"
        :key="item.id"
        class="bg-gray-800 px-4 py-6 shadow sm:p-6 sm:rounded-lg"
    >
        {{ item.description }}
    </li>
</ul>

3. 保留原Axios赋值逻辑

Mounted钩子无需修改,依然把完整的分页对象赋值给allActivities,这样分页元信息(比如总条数、分页链接)都能保留,后续做分页导航时可直接使用allActivities.links或allActivities.total:

mounted() {
    axios
        .get("/activity")
        .then((response) => (this.allActivities = response.data));
}

Laravel控制器无需修改

你的控制器代码完全正确,paginate()返回的结构符合需求:

public function index()
{
    $activity = Activity::paginate(10);
    
    return $activity;
}

修改后既不会出现页面刷新时的id找不到错误,又能完整保留分页的所有信息,后续做分页按钮、显示总条数等功能都可直接调用allActivities里的元数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:48:32