gpt4 book ai didi

javascript - Vue.js 在列表中显示 v-show

转载 作者:数据小太阳 更新时间:2023-10-29 06:05:20 25 4
gpt4 key购买 nike

我相信这对你们来说会非常容易。我试图制作一个简单的帖子列表,帖子标题始终可见,当您单击列表中的特定帖子时,您会看到帖子的正文。我为此使用了 v-show。但是,当我单击特定帖子时,会显示所有帖子的正文,而不仅仅是我单击的那个。

这是模板:

<template>
<div class="container">
<h1>My Posts</h1>
<ul class="list-group">
<li class="list-group-item" v-for="post in list">
<div @click="changeShow">
<h4>{{ post.title }}</h4>
<p v-show="show">{{ post.body }}</p>
<span v-show="show" class="label label-primary">ID: {{ post.userId }}</span>
</div>
</li>
</ul>

</div>

逻辑:

<script>

export default{

data(){
return{
msg:'hello vue',
list: [],
show: false
}
},
ready(){
this.fetchPostList();
},

methods:{
fetchPostList: function () {
var root = 'http://jsonplaceholder.typicode.com';
this.$http.get(root + '/posts').then(function (response) {
this.list = response.data;
})
},
changeShow: function () {
this.show = !this.show;
}
}

}

最佳答案

根据您的需要,有几种方法可以解决这个问题。

多开

您可以让每个帖子成为它自己的组件,这样您就可以将show 绑定(bind)到每个单独的帖子而不是所有帖子。

Vue.component('post', {
template: '#post-template',
props: {
post: Object,
},
data() {
return {
show: false,
}
},
methods: {
toggleShow() {
this.show = !this.show
},
},
})

然后你可以像这样使用它:

<post v-for="post in posts" :post="post"></post>

一开

如果你只想打开一个,你可以传递一个 id 作为 Prop 并根据它显示它。

Vue.component('post', {
template: '#post-template',
props: {
post: Object,
selectedId: Number,
},
computed: {
show() {
return this.post.id === this.selectedId
},
},
})

然后你可以这样做

<post :selected-id="selectedId" :post="post" @click="selectedId = post.id"></post>

关于javascript - Vue.js 在列表中显示 v-show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39778665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com