通过watch或者computed搭配filter实现一个最简单的列表过滤

1 篇文章 0 订阅
1 篇文章 0 订阅

公共部分,设置好界面元素,实现一个简答的搜索列表过滤效果


		<!-- 准备好一个容器-->
		<div id="root">
			<h2>人员列表</h2>
			<input type="text" placeholder="请输入名字" v-model="keyWord">
			<ul>
				<li v-for="(p,index) of filPerons" :key="index">
					{{p.name}}-{{p.age}}-{{p.sex}}
				</li>
			</ul>
		</div>

1、用watch实现
<script type="text/javascript">
      Vue.config.productionTip = false

      //用watch实现
      new Vue({
        el: '#root',
        data: {
          keyWord: '',
          persons: [
            { id: '001', name: '马冬梅', age: 19, sex: '女' },
            { id: '002', name: '周冬雨', age: 20, sex: '女' },
            { id: '003', name: '周杰伦', age: 21, sex: '男' },
            { id: '004', name: '温兆伦', age: 22, sex: '男' },
          ],
          filPerons: [],
        },
        watch: {
          keyWord: {
            immediate: true,
            handler(val) {
              this.filPerons = this.persons.filter((p) => {
                return p.name.indexOf(val) !== -1
              })
            },
          },
        },
      })
      
    </script>
2、用computed实现
<script type="text/javascript">
      Vue.config.productionTip = false

      //用computed实现
      new Vue({
        el: '#root',
        data: {
          keyWord: '',
          persons: [
            { id: '001', name: '马冬梅', age: 19, sex: '女' },
            { id: '002', name: '周冬雨', age: 20, sex: '女' },
            { id: '003', name: '周杰伦', age: 21, sex: '男' },
            { id: '004', name: '温兆伦', age: 22, sex: '男' },
          ],
        },
        computed: {
          filPerons() {
            return this.persons.filter((p) => {
              return p.name.indexOf(this.keyWord) !== -1
            })
          },
        },
      })
    </script>

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue.js 中,`watch`、`computed`和`filter` 都是用来处理数据的常用方式。 - `watch`:用于监听一个特定的数据变化,当该数据发生变化时执行相应的操作。`watch` 可以监听一个表达式或一个函数返回,并在数据变化时执行回调函数。`watch` 通常用于监听数据变化后执行异步操作或复杂的数据处理。 - `computed`:用于计算和返回一个新的数据,当依赖的数据发生变化时自动更新。`computed` 可以监视依赖的数据,当依赖的数据发生变化时,自动更新计算属性的,因此不需要手动监听数据变化。`computed` 通常用于计算多个数据的复杂逻辑。 - `filter`:用于过滤一个数组中的数据,返回一个新的数组。`filter` 接收一个回调函数,该回调函数返回一个布尔,用于指示是否保留该数据。`filter` 通常用于从一组数据中筛选需要的数据。 举个例子,如果有一个 `data` 中包含一个 `name` 和一个 `age` 属性,我们可以使用 `watch` 监听 `name` 和 `age` 的变化,并在它们发生变化时执行某些操作: ``` watch: { name: function(newValue, oldValue) { // name 发生变化了 }, age: function(newValue, oldValue) { // age 发生变化了 } } ``` 如果我们想根据 `name` 和 `age` 计算一个新的属性 `fullName`,我们可以使用 `computed`: ``` computed: { fullName: function() { return this.name + ' ' + this.age; } } ``` 如果我们有一个数组 `users` 包含多个用户对象,我们可以使用 `filter` 过滤出年龄大于等于 18 的用户: ``` computed: { adultUsers: function() { return this.users.filter(function(user) { return user.age >= 18; }); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值