【发布时间】:2021-06-27 16:15:17
【问题描述】:
我使用的是 Vue.js 3.0 版本,这是我的代码
<script>
export default {
data: function () {
return {
movies: [
{
id: 1,
title: "They All Lie",
releaseYear: 1989,
director: {
id: 18,
firstName: "Darci",
lastName: "Overill",
nationality: "China",
birthdate: "07/13/1973",
},
},
{
id: 2,
title: "Star Wars",
releaseYear: 1997,
director: {
id: 18,
title:'john',
firstName: "Darci",
lastName: "Overill",
nationality: "China",
birthdate: "07/13/1973",
},
},
{
id: 3,
title: "Mamma mia",
releaseYear: 2005,
director: {
id: 19,
title:'vesko',
firstName: "John",
lastName: "Smith",
nationality: "USA",
birthdate: "07/13/1980",
},
},
],
};
},
computed: {
filteredMovies() {
return this.movies.filter((el) => el.director.title === 'vesko' );
},
},
};
</script>
<template>
<div>
<div class="row">
<div class="col"><h1 class="mt-3">List of all Movies</h1></div>
</div>
<table class="table">
<thead>
<tr>
<th>Movie ID</th>
<th>Title</th>
<th>Release Year</th>
<th>Director ID</th>
<th></th>
</tr>
</thead>
<tbody>
<tr v-for="movie in filteredMovies" :key="movie.id">
<td>{{ movie.id }}</td>
<td>{{ movie.title }}</td>
<td>{{ movie.releaseYear }}</td>
<td>{{ movie.director.id }}</td>
</tr>
</tbody>
</table>
</div>
</template>
所以我想在单击时添加一些按钮,我想过滤我的数据。例如,当我单击时名称为 John 的复选框或按钮我只想显示带有导演标题 John 的数据或当有人输入值 John 时的输入字段 我只想要带有标题值 John 的数据。我是 Vue.js 的新手,所以我需要一些帮助
【问题讨论】:
-
我会使用 vuex 并将一个函数附加到您的复选框以重新查询 vuex 并应用您的过滤器。
-
@JeffB 你能在这里放一些代码,向我解释一下具体怎么做吗?
-
你以前用过vuex吗?最好的资源是首先学习如何添加它(非常简单,看这里:vuex.vuejs.org)。添加 vuex 后,我可以帮助您编写访问数据所需的函数。
-
我之前没用过。实际上,我想从 API 请求中过滤一些数据,但我想在这里对这些虚拟数据进行练习。所以你建议我学习 Vuex?
-
有时您会使用 vuex 存储数据,也不会使用。如果您希望这些数据在多个页面中持久存在,vuex 是您的最佳选择。无论哪种方式,学习vuex!如果此数据不是持久的,那么您可以将过滤器应用到您列出的数据中。这个答案可能会有所帮助:stackoverflow.com/a/41791604/2096053
标签: javascript html vue.js filter vue-component