filter vue 循环_Vue2.0 v-for filter列表过滤功能的实现
时间: 2023-07-27 20:10:42 浏览: 131
Vue2.0 v-for filter列表过滤功能的实现
在 Vue2.0 中,我们可以使用计算属性和过滤器来实现列表的过滤功能。
首先,在模板中使用 v-for 指令循环渲染列表,然后通过计算属性或者过滤器来对列表进行过滤。
以下是一个例子:
```html
<template>
<div>
<input type="text" v-model="keyword" placeholder="输入关键词进行搜索">
<ul>
<li v-for="item in filteredList">{{ item }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
list: ['apple', 'banana', 'orange', 'peach'],
keyword: ''
}
},
computed: {
filteredList() {
const keyword = this.keyword.trim().toLowerCase()
if (!keyword) {
return this.list
}
return this.list.filter(item => item.toLowerCase().indexOf(keyword) !== -1)
}
}
}
</script>
```
在上面的代码中,我们定义了一个列表 `list` 和一个输入框 `keyword`,然后使用 v-for 指令循环渲染列表。
在 computed 计算属性中,我们定义了一个名为 `filteredList` 的计算属性,它根据输入框中的关键词对列表进行过滤。如果输入框中没有输入关键词,则返回原始的列表;否则,使用 `filter` 方法对列表进行过滤,将符合条件的列表项返回。
在模板中,我们使用 `{{ item }}` 渲染每个列表项,但是我们使用的是 `filteredList` 计算属性,因此只会渲染符合过滤条件的列表项。
如果你想使用过滤器来实现列表过滤,可以将上面的 `filteredList` 计算属性改为一个过滤器:
```javascript
filters: {
filterList(list, keyword) {
keyword = keyword.trim().toLowerCase()
if (!keyword) {
return list
}
return list.filter(item => item.toLowerCase().indexOf(keyword) !== -1)
}
}
```
然后在模板中使用管道符 `|` 调用过滤器:
```html
<li v-for="item in list | filterList(keyword)">{{ item }}</li>
```
这样就可以实现列表的过滤功能了。
阅读全文