gpt4 book ai didi

javascript - 在 VueJS 中使用计算属性过滤结果时,如何显示数组中的所有文章?

转载 作者:行者123 更新时间:2023-12-02 20:50:35 25 4
gpt4 key购买 nike

我正在使用 VueJS 显示文章列表。然后我有一些过滤器,它们使用复选框和计算属性来根据选择的标签过滤显示的文章列表。

但是,我想添加一个“全部”标签,该标签将清除之前选择的任何已应用的过滤器标签(体育/学校)。这可能吗?如果是这样,我需要做什么?欢迎任何帮助。

var app = new Vue({
el: '#app',
data: {
tags: ['all', 'sports', 'schools'],
articles: [
{tags: ['sports'], name: 'Why sports is fun'},
{tags: ['sports', 'schools'], name: 'How sports helps schools'},
{tags: ['schools'], name: 'Why students attend school'}
],
selectedTags: []
},
computed: {
activeArticles: function() {
if(this.selectedTags.length == 0) return this.articles;

var activeArticles = [];
var filters = this.selectedTags;

this.articles.forEach(function(article) {

function articleContainsFilter(filter) {
return article.tags.indexOf(filter) != -1;
}

if(filters.every(articleContainsFilter)) {
activeArticles.push(article);
}
});
return activeArticles;
}
}
});

那么我的HTML如下;

<div id="app">

<label for="showAllArticles">All</label>
<input type="checkbox" value="showAllArticles">

<div v-for="tag in tags">
<input type="checkbox" value="{{ tag }}" v-model="selectedTags" id="tag-{{ tag }}">
<label for="tag-{{ tag }}">{{ tag }}</label>
</div>

<p v-show="selectedTags.length != 0">
Filters: <span v-for="tag in selectedTags" class="label">{{ tag }}</span>
</p>

<ul>
<li v-for="article in activeArticles">{{ article.name }}</li>
</ul>

</div>

最佳答案

更改activeArticles以在选择all标签时返回所有文章

    activeArticles: function() {
// if statement edited
if(this.selectedTags.length == 0 || this.selectedTags.includes('all') )return this.articles;

var activeArticles = [];
var filters = this.selectedTags;

this.articles.forEach(function(article) {

function articleContainsFilter(filter) {
return article.tags.indexOf(filter) != -1;
}

if(filters.every(articleContainsFilter)) {
activeArticles.push(article);
}
});
return activeArticles;
}

关于javascript - 在 VueJS 中使用计算属性过滤结果时,如何显示数组中的所有文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61614985/

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