首页 > 其他分享 >Vue学习笔记19--列表过滤(watch属性过滤 + computed属性过滤)

Vue学习笔记19--列表过滤(watch属性过滤 + computed属性过滤)

时间:2024-02-28 15:55:42浏览次数:23  
标签:Vue name -- age sex 过滤 id 属性

列表过滤--监听属性过滤

<!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>
  <div id="root">
    <h2>人员列表信息(遍历数组):</h2>
    <hr>
    <!-- <button @click.once="add">新增人员</button> -->
    <!-- <button @click.once="searchPersons">搜索</button> -->
    <input type="text" placeholder="请输入姓名" v-model="keyWord">
    <!-- 遍历数组 -->
    <ul>
      <li v-for="p in filPersonList" :key="p.id">
        {{p.id}}-{{p.name}}-{{p.age}}-{{p.sex}}
      </li>
    </ul>
    <hr>
  </div>
</body>

</html>
<script type="text/javascript">
  Vue.config.productionTip = false
  const vm = new Vue({
    el: '#root',
    data: {
      keyWord: '',
      personList: [
        { id: '001', name: '乔峰', age: 28, sex: '男' },
        { id: '002', name: '虚竹', age: 25, sex: '男' },
        { id: '003', name: '段誉', age: 22, sex: '男' },
        { id: '004', name: '童姥', age: 90, sex: '女' },
        { id: '005', name: '李秋水', age: 88, sex: '女' },
      ],
      filPersonList: [

      ],

    },
    watch: {
      keyWord: {
        immediate: true,
        handler (val) {
          this.filPersonList = this.personList.filter((p) => {
            return p.name.indexOf(val) !== -1
          })
        }
      }
    }
  })
</script>

  

 

 列表过滤--计算属性过滤(运行效果如上)

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>列表过滤之computed</title>
  <script type="text/javascript" src="../Js/vue.js"></script>
</head>

<body>
  <div id="root">
    <h2>人员列表信息(遍历数组):</h2>
    <hr>
    <!-- <button @click.once="add">新增人员</button> -->
    <!-- <button @click.once="searchPersons">搜索</button> -->
    <input type="text" placeholder="请输入姓名" v-model="keyWord">
    <!-- 遍历数组 -->
    <ul>
      <li v-for="p in filPersonList" :key="p.id">
        {{p.id}}-{{p.name}}-{{p.age}}-{{p.sex}}
      </li>
    </ul>
    <hr>
  </div>
</body>

</html>
<script type="text/javascript">
  Vue.config.productionTip = false
  const vm = new Vue({
    el: '#root',
    data: {
      keyWord: '',
      personList: [
        { id: '001', name: '乔峰', age: 28, sex: '男' },
        { id: '002', name: '虚竹', age: 25, sex: '男' },
        { id: '003', name: '段誉', age: 22, sex: '男' },
        { id: '004', name: '童姥', age: 90, sex: '女' },
        { id: '005', name: '李秋水', age: 88, sex: '女' },
      ],
    },
    computed: {
      // 简写,简写时确保不用settter
      // myfullname: function () {
      filPersonList () {
        return this.personList.filter((p) => {
          return p.name.indexOf(this.keyWord) !== -1
        })
      }
    },



  })
</script>

  

标签:Vue,name,--,age,sex,过滤,id,属性
From: https://www.cnblogs.com/YYkun/p/18040626

相关文章

  • Vue3 配合 Element-Plus 和 iframe-resizer 完美实现抽屉 Drawer 和 iframe
    环境准备pnpminstallvuelodashelement-plusiframe-resizerpnpminstall@types/iframe-resizer-Diframe新建文件src/utils/directives/iframeResize.ts​import{Directive,DirectiveBinding,nextTick}from"vue"importiframeResizefrom"iframe-r......
  • Vue学习笔记19--key的原理
    react、vue中key的作用(key的原理?):虚拟DOM中key的作用:key是虚拟DOM对象的标识,当张贴中的数据发生变化时,vue会根据--新数据,生成新的虚拟DOM,随后vue进行新虚拟DOM与旧虚拟DOM的差异比较。比较规则如下:对比规则旧虚拟DOM中找到了与新虚拟DOM相同的key若虚拟DOM中内容没......
  • Vue 2x 系列之(十四)收集表单数据
    收集表单数据如何利用Vue提供的v-model收集一个表单中的数据v-model配合不同的input标签有不同的技巧hobby的初始值能够影响v-model收集回来的数据hobby为字符串,收集到的是checked属性的值hobby为数组,收集到的是自己定义的value属性的值多选框【CheckBox】如果不指定value,默......
  • Vue 2x 系列之(十三)Vue监测数据的原理
    Vue监测数据的原理思路:举例==》监测对象数据原理==》Vue.set()==》监测数组数据原理==》说明前面例子中的现象Vue监测数据改变的原理Vue底层监测data中数据改变的原理和watch中监测数据的原理是一致的,watch是Vue提供给我们用于自行监视数据变化的配置项1.更新......
  • Vue 2x 系列之(十二)列表渲染
    列表渲染1.v-for指令v-for指令: 1.用于展示列表数据 2.语法:v-for="(item,index)inxxx":key="yyy" 3.可遍历:数组(用的最多)、对象、字符串(用的很少)、指定次数(用的很少)<body> <!--准备好一个容器--> <divid="root"> <!--遍历数组--> <h2>人员列表(......
  • Vue 2x 系列之(十一)条件渲染
    条件渲染符合某些条件,就给你渲染某些东西;不符合条件,要渲染的东西就不会显示原生可以通过display:none;、visibility:hidden;、opacity:0;几种方式实现v-if和v-else-if、v-else需要作为一组指令使用,中间不允许被打断,v-else是不需要加表达式的只能配合v-if使用,不能配合v-show......
  • Vue 2x 系列之(十)绑定样式
    绑定样式1.class样式绑定样式: 1.class样式【不变的样式写在class、style中,变化的样式写在:class中,最终的样式为三者的并集】 写法:class="xxx"xxx可以是字符串、对象、数组。 字符串写法适用于:类名不确定,要动态获取。 对象写法适用于:要绑定多个样式,个数......
  • Vue 2x 系列之(九)监视和侦听属性
    监视/侦听属性【watch】用于监视某一个属性的变化监视属性watch: 1.当被监视的属性变化时,回调函数【handler()】自动调用,进行相关操作 2.监视的属性必须存在,才能进行监视!!【监视不存在的属性不会报错】 3.配置监视的两种写法: (1).newVue时传入watch配置 (2).通过vm.......
  • Vue 2x 系列之(八)计算属性
    计算属性【computed】1.姓名案例1.1{{}}插值语法版本<body> <divid="root"> 姓:<inputtype="text"v-model="firstName"/> 名:<inputtype="text"v-model="lastName"/> <hr/> 全名:{{firstNa......
  • Vue 2x 系列之(七)事件处理
    事件处理1.事件的基本使用模板只能用到对应Vue实例中的数据和方法,像这里的showInfo,模板中是调不到的所有被Vue管理的函数【methods对象中的函数】不能写成箭头函数,只能写成普通函数,否则,函数中的this就不再是Vue实例,而是Window对象只有配置在data中的内容才会做数据代理和数......