Vue核心语法第十四篇:列表过滤

一:代码

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>列表过滤</title>

  <script type="text/javascript" src="../../js/vue.js"></script>

</head>

<body>
  <!-- 准备好一个容器, -->
  <!-- 第一部:获取用户输入v-model -->
  <!-- 第二步,根据用户输入进行过滤,当用户输入内容变化的时候进行过滤。 -->
  <div id="root">
    <h2>人员列表</h2>
    <input type="text" placeholder="请输入名字" v-model="keyWord">
    <ul>
      <li v-for="p in filePersons" :key="p.id">{{p.name}}-{{p.age}}-{{p.sex}}</li>
    </ul>
  </div>
  <script>

    // 使用watch实现
    // Vue.config.productionTip = false
    // const vm = new Vue({
    //   el: '#root',
    //   data: {
    //     keyWord: '',
    //     persons: [
    //       { id: "001", name: "马冬梅", age: 13, sex: '男' },
    //       { id: "002", name: "周冬雨", age: 18, sex: '男' },
    //       { id: "003", name: "周杰伦", age: 20, sex: '男' },
    //       { id: "004", name: "温兆伦", age: 20, sex: '男' }
    //     ],
    //     filePersons: [
    //     ]
    //   },
    //   watch: {
    //     keyWord: {
    //       // 立即执行一次。
    //       immediate: true,
    //       handler(val) {
    //         this.filePersons = this.persons.filter((p) => {
    //           return p.name.indexOf(val) != -1;
    //         })
    //       }
    //     }
    //   }
    //   // ,
    //   // WATCH和data是平级关系
    //   // watch: {
    //   //   // a是new,b是old
    //   //   keyWord(a, b) {
    //   //     console.log("苏醒被改了")
    //   //     // 数组的过滤方法,return的是满足条件的数据。
    //   //     // 元数据不能修改,直接复制出来之后,修改。
    //   //     this.persons = this.persons.filter((p) => {
    //   //       return p.name.indexOf(a) != -1;
    //   //     })
    //   //   }
    //   // }

    // })



    //使用computed实现
    Vue.config.productionTip = false
    const vm = new Vue({
      el: '#root',
      data: {
        keyWord: '',
        persons: [
          { id: "001", name: "马冬梅", age: 13, sex: '男' },
          { id: "002", name: "周冬雨", age: 18, sex: '男' },
          { id: "003", name: "周杰伦", age: 20, sex: '男' },
          { id: "004", name: "温兆伦", age: 20, sex: '男' }
        ],
        filePersons: [
        ]
      },
      computed: {
        filePersons() {
          return this.persons.filter((p) => {
            return p.name.indexOf(this.keyWord) != -1;
          })
        }
      }

    })


  </script>

</body>

</html>

二:效果

相关推荐
benbenAItalk4 小时前
数字人口播视频的批量生产实践:素材规范、任务编排与质量验收
java·前端·音视频
2601_962885724 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
西瓜太郎12345 小时前
Claude Code、Codex CLI、Gemini CLI 能否共用一枚 Key?先看协议选择矩阵
前端·api 网关·claude code·gemini cli·codex cli
多加点辣也没关系5 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
陈随易7 小时前
在Finch用了62亿词元,我认为这是新一代Agent工具之神
前端·人工智能·后端
水域安全老周7 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
计算机魔术师8 小时前
Anthropic CEO突然喊踩刹车,OpenAI罕见力挺:AI这辆车不能只踩油门了
前端
wing988 小时前
从codex转战workbuddy使用一周的感受
前端·人工智能·后端
Highcharts.js8 小时前
常见报错排雷指南2:导出失败的官方解法
javascript·react.js·ecmascript·highcharts·可视化图表·导出模块失败·导出服务
EatFan8 小时前
Java接入支付宝 JSAPI 支付保姆教程(二):流程讲解与前后端代码讲解
前端·spring boot·后端·微信小程序·小程序·uni-app