在Laravel中,我有一个名为“垃圾”的简单模型,它的迁移看起来像这样:
Schema::create('garbages', function (Blueprint $table) {
$table->id();
$table->date('disposal_at');
$table->timestamps();
});
字符串
在我的Laravel路由器(web.php)中,路由看起来像这样:
Route::get('/garbage', function() {
$garbages = \App\Models\Garbage::all()
->sortBy('disposal_at');
// dd($garbage);
return Inertia::render('Grabage', [
'garbages' => $garbages
]);
});
型
正如你所看到的,我只是得到了我所有的垃圾记录,按'disposal_at'对它们进行排序,并将其传递给Inertia::render
。
现在我想通过vue在列表中显示所有记录,文件看起来像这样:
<script setup lang="ts">
interface Garbage {
id: number,
disposal_at: string
}
const props = defineProps<{
garbages: Garbage[]
}>();
</script>
<template>
<ul>
<li v-for="garbage in garbages" :key="garbage.id">
{{ garbage.disposal_at }}
</li>
</ul>
</template>
型
输出如下所示:
- 2002-08-19
- 2002-06-05
- 1995-07-18
- 1978-12-21
- 1989-07-12
- 1975-09-06
- 2000-03-01
- 2012-06-04
- 2022-11-09
- 2006-04-10
现在我的问题是,虽然我在laravel中通过“disposal_at”对集合进行了排序,但在我通过Inertia::render()
将其传递给vue之后,它再次按id排序。
我已经在laravel路由器中通过dd($garbage)
显示了值,以查看它是否在那里排序,这给了我按“disposal_at”排序的集合,但在Vue中它不再按“disposal_at”排序。
为什么会发生这种情况,我该如何解决?
1条答案
按热度按时间vdgimpew1#
要解决这个问题,您需要在排序后使用
values()
方法重置键:字符串
当你序列化集合并发送到前端时,JS不保证顺序。使用
values()
可以保持顺序。