Vue——案例01(查询用户)

一、案例实现页面

二、案例实现效果

1. 查询效果

2. 年龄升序

3. 年龄降序

4. 原顺序

三、案例实现思路

  1. 定义界面所需标签样式

    复制代码
     <div id="app">
       <h2>查询用户:</h2>
       <input type="text" placeholder="请输入名字"/>
       <button>年龄升序</button>
       <button>年龄降序</button>
       <button>原顺序</button>
    
       <table border="1px">
         <tr>
           <th>编号</th>
           <th>姓名</th>
           <th>性别</th>
           <th>年龄</th>
         </tr>
       </table>
     </div>
  2. 定义界面所需数据

    复制代码
         data: function () {
           return {
             datas: [
               { id: 1, name: "李思思", sex: "女", age: 20 },
               { id: 2, name: "王五", sex: "男", age: 24 },
               { id: 3, name: "张三", sex: "男", age: 22 },
               { id: 4, name: "李四", sex: "男", age: 21 },
             ],
             inputname: "",
             sortType: 0, //0表示原顺序,1表示升序,2表示降序
           };
         }
  3. 将数据循环放置在标签中

    复制代码
         <tr v-for="(data,index) in fillDatas" :key="data.id">
           <td>{{data.id}}</td>
           <td>{{data.name}}</td>
           <td>{{data.sex}}</td>
           <td>{{data.age}}</td>
         </tr>
  4. 分别给每个按钮绑定相应的事件

0表示原顺序,1表示升序,2表示降序

复制代码
      <button @click="sortType=1">年龄升序</button>
      <button @click="sortType=2">年龄降序</button>
      <button @click="sortType=0">原顺序</button>
  1. 将事件全部定义在计算属性中

filter ()方法创建给定数组的一部分的浅副本,过滤掉给定数组中通过所提供函数实现的测试的元素

过滤数据获取数组对象

复制代码
        computed: {
          //data中数据有变化,计算属性就在监听
          fillDatas() {
            //filter ()方法创建给定数组的一部分的浅副本,过滤掉给定数组中通过所提供函数实现的测 
            试的元素
            //过滤数据获取数组对象
            let arr = this.datas.filter((data) => {
              return data.name.indexOf(this.inputname) > -1;
            });
            if (this.sortType == 1) {
              //升序
              arr.sort(function (d1, d2) {
                return d1.age - d2.age;
              });
            }
            if (this.sortType == 2) {
              //降序
              arr.sort(function (d1, d2) {
                return d2.age - d1.age;
              });
            }
            return arr;
          },
        }

四、完整代码

复制代码
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>查询用户</title>
  </head>

  <body>
    <div id="app">
      <h2>查询用户:</h2>
      <input type="text" placeholder="请输入名字" v-model="inputname" />
      <button @click="sortType=1">年龄升序</button>
      <button @click="sortType=2">年龄降序</button>
      <button @click="sortType=0">原顺序</button>

      <table border="1px">
        <tr>
          <th>编号</th>
          <th>姓名</th>
          <th>性别</th>
          <th>年龄</th>
        </tr>
        <tr v-for="(data,index) in fillDatas" :key="data.id">
          <td>{{data.id}}</td>
          <td>{{data.name}}</td>
          <td>{{data.sex}}</td>
          <td>{{data.age}}</td>
        </tr>
      </table>
    </div>

    <script type="text/javascript" src="../js/vue.global.js"></script>
    <script>
      // 1.创建app
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            message: "Hello Vue",
            datas: [
              { id: 1, name: "李思思", sex: "女", age: 20 },
              { id: 2, name: "王五", sex: "男", age: 24 },
              { id: 3, name: "张三", sex: "男", age: 22 },
              { id: 4, name: "李四", sex: "男", age: 21 },
            ],
            inputname: "",
            sortType: 0, //0表示原顺序,1表示升序,2表示降序
          };
        },
        //计算属性
        computed: {
          //data中数据有变化,计算属性就在监听
          fillDatas() {
            //filter ()方法创建给定数组的一部分的浅副本,过滤掉给定数组中通过所提供函数实现的测试的元素
            //过滤数据获取数组对象
            let arr = this.datas.filter((data) => {
              return data.name.indexOf(this.inputname) > -1;
            });
            if (this.sortType == 1) {
              //升序
              arr.sort(function (d1, d2) {
                return d1.age - d2.age;
              });
            }
            if (this.sortType == 2) {
              //降序
              arr.sort(function (d1, d2) {
                return d2.age - d1.age;
              });
            }
            return arr;
          },
        },
      });

      // 2.挂载app
      app.mount("#app");
    </script>

    <style></style>
  </body>
</html>
相关推荐
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
FungLeo4 小时前
成为全栈·React 管理后台篇·总复盘:从“接口能调通”到“后台值得使用”
前端·react.js·前端框架·项目复盘·成为全栈
鬓戈4 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
传奇开心果编程5 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
xian_wwq5 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
Csvn5 小时前
并发模式:让渲染学会排队、插队和让路
前端
可乐鸡翅yeah_5 小时前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
Flynt5 小时前
Linear 用 1000 个 PR 换掉 styled-components,我写了 200 个按钮,把这笔账复现了一遍
前端·css·preact
传奇开心果编程5 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
yangmu32036 小时前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习