可以选择显示more
文本或less
,但@click
事件适用于所有elements
,所有元素显示所有文本。
我明白,我需要传递一些值来标识单个元素,该值不会应用于所有元素,但目前卡住了,并会感谢帮助。
超文本:
<tr v-for="script in scripts.slice(0, 5)">
<td>{{script.key}}</td>
<td v-if="!readMore">{{script.script_content.substring(0, 200) + ".."}}</td>
<td v-if="readMore">{{script.script_content}}</td>
<button @click="showMore" v-if="!readMore" class="btn btn-primary">Show more</button>
<button @click="showLess" v-if="readMore" class="btn btn-primary">Show less</button>
</tr>
Vue数据和方法:
data: () => ({
readMore: false,
}),
methods: {
showMore() {
this.readMore = true;
},
showLess() {
this.readMore = false;
},
数组值:
我怎样才能使一个方法只应用于一个单独的元素?
在这种情况下,不需要创建组件,因为这种情况将只在一个页面上使用。
2条答案
按热度按时间1yjd4xko1#
创建一个对象来保存
readMore
切换的哈希值,每个项目一个:键将是项id。在模板中测试这些键,并通过传递该id在按钮中设置它们:
通过传递项ID并切换它来设置
methods
中的值:fnvucqvd2#
使用索引而不是此.$集合