【发布时间】:2021-03-05 16:53:53
【问题描述】:
我正在尝试向数组 (v-for) 的数组 (v-for) 添加“显示更多”按钮。
<li v-for="(recruiter, key) in recruiters.data" :key="recruiter.id">
<div v-if="recruiter.cities" >
<div v-if="recruiter.cities.length <= 5 || recruiter.id in cities_expand">
<a :href="'/rekryterare/' + city.slug" v-for="(city, index) in recruiter.cities">{{ city.name }}</a>
</div>
<div v-else>
<template v-for="(city, index) in recruiter.cities">
<template v-if="index+1 <= 4">
<a :href="'/rekryterare/sverige/' + city.slug" >{{ city.name }}</a>
</template>
</template>
<a href="#" @click.prevent="cities_expand.push(recruiter.id)" >...</a>
</div>
</div>
</li>
基本上如果recruiter.cities中超过4个项目->显示4个项目+“显示更多”
但是 - recruiter.id in cities_expand 不起作用/更新?
我确信有更好的方法来解决这个问题 - 但没有想到其他方法 :) 有什么想法吗?
【问题讨论】:
-
我没有看到任何与 Vue 或 js 相关的更好的解决方案
-
谢谢 - 但奇怪的是......它不起作用。即使city_expand 有recruiter.id,它也没有显示所有城市。更奇怪的是:如果我点击“显示更多”的垃圾邮件,它最终会更新..
-
请分享一个可复制的例子
-
您是在讨论未显示的单独代码中的城市扩展的渲染吗?很明显,
recruiter.id in cities_expand行不会再次呈现,因为您没有更改recruiters.data,因此它不会再次触发此循环 -
黑客将是
:key="recruiter.id + JSON.stringify(cities_expand)"