Vue开发05:Vue中Ant-design主要控件用法demo(js为主)

news2024/11/24 18:50:39

Ant-design主要控件事件总结

在线测试网站:在线运行Vue组件 (rscl.cc)

以下demo全部基于ant-design-vue组件(版本1.7.8)


一、下拉框

1.选项直接赋值($event)

用下面这个技巧,可以不写methods,注意如果需要打印要写成 this.SelectedValue.val 

<template>
  <div>
    <!-- a-select 选择框 -->
    <a-select @change="selectedValue = $event" placeholder="请选择一个选项" style="width: 200px;">
      <a-select-option value="apple">苹果</a-select-option>
      <a-select-option value="banana">香蕉</a-select-option>
      <a-select-option value="cherry">樱桃</a-select-option>
    </a-select>

    <!-- p 标签展示选择的内容 -->
    <p>你选择的水果是: {{ selectedValue }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 用来保存选择的值
      selectedValue: ''
    };
  }
};
</script>

<style scoped>
/* 样式可以根据需要调整 */
</style>

麻烦点也可以写成一个方法:

methods: {
    handleChange(event) {
      const selectedValue = event.target.value;//通过事件获取变化的目标值
      this.message = selectedValue === '第一个' ? '点击了第一个' : '点击了第二个';
    }
  }

 

 2.三联动

<template>
  <a-row>
    <a-col :span="8">
      <a-select v-model="selectedCountry" @change="onCountryChange" placeholder="请选择国家" style="width: 100px;" allow-clear>
        <a-select-option v-for="country in uniqueCountries" :key="country" :value="country">
          {{ country }}
        </a-select-option>
      </a-select>
    </a-col>
    <a-col :span="8">
      <a-select v-model="selectedDistrict" @change="onDistrictChange"  placeholder="请选择地区" style="width: 100px;" allow-clear>
        <a-select-option v-for="district in filteredDistricts" :key="district" :value="district">
          {{ district }}
        </a-select-option>
      </a-select>
    </a-col>
    <a-col :span="8">
      <a-select v-model="selectedSchool" @change="onSchoolChange" placeholder="请选择学校" style="width: 100px;" allow-clear>
        <a-select-option v-for="school in filteredSchools" :key="school" :value="school">
          {{ school }}
        </a-select-option>
      </a-select>
    </a-col>
  </a-row>
</template>
 
<script>
export default {
  data() {
    return {
      selectedCountry: null,
      selectedDistrict: null,
      selectedSchool: null,
      originalData: [
        { country: "中国", district: "北京市", school: "北京大学" },
        { country: "中国", district: "上海市", school: "复旦大学" },
        { country: "美国", district: "马萨诸塞州", school: "哈佛大学" }
      ],
      uniqueCountries: [],
      filteredDistricts: [],
      filteredSchools: []
    };
  },
  methods: {
    onCountryChange() {
      this.selectedDistrict = null; // 重置地区和学校选择
      this.selectedSchool = null;
      this.queryset();
    },
    onDistrictChange() {
      this.selectedSchool = null; // 重置学校选择
      this.queryset();
    },
    onSchoolChange() {
      this.queryset();
    },
    queryset() {
      let filteredData = this.originalData;
 
      if (this.selectedCountry) {
        filteredData = filteredData.filter(item => item.country === this.selectedCountry);
      }
      if (this.selectedDistrict) {
        filteredData = filteredData.filter(item => item.district === this.selectedDistrict);
      }
      if (this.selectedSchool) {
        filteredData = filteredData.filter(item => item.school === this.selectedSchool);
      }
 
      this.uniqueCountries = [...new Set(filteredData.map(item => item.country))];
      this.filteredDistricts = [...new Set(filteredData.map(item => item.district))];
      this.filteredSchools = [...new Set(filteredData.map(item => item.school))];
    }
  },
  mounted() {
    this.queryset(); // 初始化调用
  }
};
</script>

二、按钮

1.开关功能

<template>
  <div>
    <!-- 切换加载状态按钮 -->
    <a-button @click="isLoading = !isLoading">
      {{ isLoading ? '停止加载' : '开始加载' }}
    </a-button>

    <!-- 切换按钮C启用/禁用状态 -->
    <a-button @click="isEnabled = !isEnabled">
      {{ isEnabled ? '禁用按钮 C' : '启用按钮 C' }}
    </a-button>

    <!-- 控制是否显示按钮 C -->
    <a-button @click="showButtonC = !showButtonC">
      {{ showButtonC ? '隐藏按钮 C' : '显示按钮 C' }}
    </a-button>

    <!-- 只有在 showButtonC 为 true 时才渲染按钮 C -->
    <a-button v-if="showButtonC" :disabled="!isEnabled" :loading="isLoading">
      按钮 C
    </a-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoading: false, // 控制按钮 C 的加载状态
      isEnabled: true, // 控制按钮 C 的启用/禁用状态
      showButtonC: true // 控制按钮 C 的显示/隐藏
    };
  }
};
</script>
<template>
  <div id="app">
    <!-- 第一个按钮:点击后改变第二个按钮的颜色 -->
    <a-button type="primary" @click="isChanged = !isChanged">点击我改变颜色</a-button>
    
    <!-- 第二个按钮:颜色会根据点击情况变化 -->
    <a-button :id="'button2'" :style="isChanged ? { backgroundColor: 'red', color: 'black' } : { backgroundColor: 'gray', color: 'white' }" type="default">第二个按钮</a-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 用来控制样式切换的布尔值
      isChanged: false
    };
  }
};
</script>

 

三、CheckBox

1.全选

<template>
  <div>
    <div>
      <a-checkbox :indeterminate="indeterminate" :checked="checkAll" @change="onCheckAllChange">
        Check all
      </a-checkbox>
    </div>
    <br />
    <a-checkbox-group v-model="checkedList" :options="plainOptions" @change="onChange" />
  </div>
</template>
<script>
const plainOptions = ['Apple', 'Pear', 'Orange'];
const defaultCheckedList = ['Apple', 'Orange'];
export default {
  data() {
    return {
      checkedList: defaultCheckedList,
      indeterminate: true,
      checkAll: false,
      plainOptions,
    };
  },
  methods: {
    onChange(checkedList) {
      this.indeterminate = !!checkedList.length && checkedList.length < plainOptions.length;
      this.checkAll = checkedList.length === plainOptions.length;
    },
    onCheckAllChange(e) {
      Object.assign(this, {
        checkedList: e.target.checked ? plainOptions : [],
        indeterminate: false,
        checkAll: e.target.checked,
      });
    },
  },
};
</script>

四、时间

1.早晚判断

不允许结束时间比开始时间还早,否则清空

<template>
  <div id="app">
    <h1>时间选择器</h1>
    <label for="startTime">开始时间:</label>
    <input type="datetime-local" id="startTime" v-model="startTime" @change="checkTime" />

    <label for="endTime">结束时间:</label>
    <input type="datetime-local" id="endTime" v-model="endTime" @change="checkTime" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      startTime: '',
      endTime: ''
    };
  },
  methods: {
    checkTime() {
      if (this.startTime && this.endTime) {
        if (new Date(this.startTime) > new Date(this.endTime)) {
          this.startTime = '';
          this.endTime = '';
        }
      }
    }
  }
};
</script>

五、表格

1.增删改查表格(v-for v-if @click 传参)

<template>
  <div>
    <table>
      <thead>
        <tr>
          <th>ID</th>
          <th>Name</th>
          <th>Age</th>
          <th>Score</th>
          <th>Actions</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in items" :key="index">
          <td>{{ item.id }}</td>
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>{{ item.score }}</td>
          <td>
            <button @click="showId(item.id)">获取ID</button>
            <button @click="showScore(item.score)">获取分数</button>
          </td>
        </tr>
      </tbody>
    </table>
    <p v-if="selectedId">选中的ID: {{ selectedId }}</p>
    <p v-if="selectedScore !== null">选中的分数: {{ selectedScore }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Alice', age: 20, score: 85 },
        { id: 2, name: 'Bob', age: 22, score: 90 },
        { id: 3, name: 'Charlie', age: 23, score: 88 },
        { id: 4, name: 'David', age: 21, score: 92 },
        { id: 5, name: 'Eva', age: 24, score: 95 }
      ],
      selectedId: null,
      selectedScore: null
    };
  },
  methods: {
    showId(id) {
      this.selectedId = id;
      this.selectedScore = null; // 清除选中的分数
    },
    showScore(score) {
      this.selectedScore = score;
      this.selectedId = null; // 清除选中的ID
    }
  }
};
</script>

<style scoped>
table {
  width: 100%;
  border-collapse: collapse;
}
th, td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: left;
}
th {
  background-color: #f2f2f2;
}
</style>

语法总结:

item代表元素,index代表索引,如果有id,优先选择 item.id 作为key!其次可以选择index作为key~

<tr v-for="(item, index) in items" :key="index">
<tr v-for="(item, index) in items" :key="item.id">

2.增删改查表格(slot插槽) 

<template>
  <a-table :data-source="tableData" :columns="columns" rowKey="id">
    <!-- 使用 slot 定义操作列 -->
    <template slot="action" slot-scope="text, record">
      <a-button @click="handleEdit(record)" size="small" type="primary">编辑</a-button>
      <a-button @click="handleDelete(record)" size="small" type="danger">删除</a-button>
    </template>
  </a-table>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { id: 1, name: '张三', age: 24 },
        { id: 2, name: '李四', age: 30 },
        { id: 3, name: '王五', age: 28 },
      ],
      columns: [
        { title: 'ID', dataIndex: 'id' },
        { title: '名称', dataIndex: 'name' },
        { title: '年龄', dataIndex: 'age' },
        {
          title: '操作',
          // 定义操作列的插槽
          dataIndex: 'action',
          scopedSlots: { customRender: 'action' }
        }
      ]
    };
  },
  methods: {
    handleEdit(record) {
      this.$message.info(`编辑 ${record.name}`);
    },
    handleDelete(record) {
      this.$message.info(`删除 ${record.name}`);
    }
  }
};
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】二叉树(2)

目录 1. 二叉树的遍历 前序遍历 中序遍历 后序遍历 2. 计算二叉树中的节点个数 3. 计算二叉树中叶子节点个数 4. 计算二叉树的深度 5. 计算二叉树第k层节点个数 6. 二叉树基础练习 7. 二叉树的创建 8. 二叉树的销毁 9. 层序遍历 10. 判断二叉树是否为完全二叉树 1…

mysql | limit X, -1 早已不可使用,本身也是一个错误

一、背景 需求&#xff1a;使用 mysql 时&#xff0c;需要获取第 X 条数据之后的所有数据。 这时&#xff0c;首先想到的就是利用 limit 来实现。 早期的部分文章或者资料中&#xff0c;提到可以使用&#xff1a; limit X,-1 例如&#xff0c;获取第一条后的所有数据&…

C++:探索AVL树旋转的奥秘

文章目录 前言 AVL树为什么要旋转&#xff1f;一、插入一个值的大概过程1. 插入一个值的大致过程2. 平衡因子更新原则3. 旋转处理的目的 二、左单旋1. 左单旋旋转方式总处理图2. 左单旋具体会遇到的情况3. 左单旋代码总结 三、右单旋1. 右单旋旋转方式总处理图2. 右单旋具体会遇…

开发一套ERP 第二弹

前后端分离 一起做,发现会有点问题,有时候分不太清楚 可以使用 naive ui admin 作为前端 menu 的配置在mock 中,在mock 中修改为自己需要的选项即可,mock 中返回的是前端需要测试的数据接口 同理自己需要的API也可以定义到 api 中&#xff0c;然后在mock 中配置返回的结果;然后…

cangjie (仓颉) vscode环境搭建

sdk下载 下载中心-仓颉编程语言官网 可选择半年更新版&#xff0c;不用申请。目前版本&#xff1a;0.53.13 &#xff0c;选择不同平台压缩包下载解压到任意位置即可 补充下载&#xff0c;vscode插件解压后&#xff0c;在vscode扩展中选择从vsix安装&#xff0c;安装后新增名为…

ES6 、ESNext 规范、编译工具babel

ES6 、ESNext 规范、编译工具简介 ES6ES&#xff08;ECMAScript&#xff09; vs JS常量进一步探讨 obj对象的扩展面试&#xff1a;使对象属性也不能更改——Object.freeze(obj) 解构deconstruction变量的解构赋值&#xff1a;数组解构赋值&#xff1a;对象解构赋值&#xff1a;…

SQL 语句执行计划中的连接方式

SQL 语句执行计划中的连接方式 join操作 join操作基本分为3大类&#xff1a;外连接&#xff08;细分为&#xff1a;左连接&#xff08;Left outer join/ left join&#xff09;、右连接&#xff08;right outer join/ right join&#xff09;、全连接&#xff08;full outer …

数据结构第一讲

数据结构定义 算法的定义 什么是好算法&#xff1f; 空间复杂度 时间复杂度 例子1 打印1到N之间的正整数 有递归和循环两种方法实现。 但是在数字变大后&#xff0c;递归的方法会导致内存占用过多而崩溃。 而循环则不会 例子2 写程序给定多项式在X处的值 从里往外算的算…

--- 文件IO java ---

文本文件和二进制文件 文件再底层其实就是以一段二进制数据的形式储存的&#xff0c;当我用记事本打开文件时&#xff0c;有些文件会出现乱码&#xff0c;这就是二进制文件&#xff0c;而有一些文件是特殊的&#xff0c;他以特定的编码方式&#xff08;比如ascll&#xff09;可…

洛谷 P1616 疯狂的采药 C语言 记忆化搜索

题目&#xff1a; https://www.luogu.com.cn/problem/P1616?contestId215526 完全背包问题&#xff0c;最后一个超出空间了。完全背包和就是无限次的拿&#xff0c;公式跟01背包差不多。 但是&#xff0c;只有当前能拿和拿不下&#xff0c;换下一个。注意要处理好边界条件。…

java基础概念37:正则表达式2-爬虫

一、定义 【回顾】正则表达式的作用 作用一&#xff1a;校验字符串是否满足规则作用二&#xff1a;在一段文本中查找满足要求的内容——爬虫 二、本地爬虫VS网络爬虫 2-1、本地爬虫 示例&#xff1a; 代码优化&#xff1a; public static void main(String[] args) {// 大…

多目标跟踪算法

文章目录 一、传统方法1. 基于卡尔曼滤波器的方法1.1 Kalman Filter(卡尔曼滤波器) 2. 基于数据关联的方法2.1 匈牙利算法 二、深度学习方法1. 基于检测的多目标跟踪1.1 SORT算法1.2 DeepSort1.3 BoT-SORT 2. 基于特征关联和增强的方法2.1 ByteTrack 3. 基于Transformer的方法3…

网络(TCP)

目录 TCP socket API 详解 bind(): 我们的程序中对myaddr参数是这样初始化的: listen(): accept(): 理解accecpt的返回值: 饭店拉客例子 connect tcp服务器和udp类似的部分代码 把套接字设置为监听状态&#xff08;listen&#xff09; 测试 查看端口号和IP地址&…

阿里云 DevOps 资源安全扫描实践

随着企业上云进程的加速&#xff0c;云资源的使用量日益增长&#xff0c;云环境中资源的安全性和稳定性成为了企业业务运营的关键要素 面对多样化的云资源和复杂的应用场景&#xff0c;传统的安全管理手段已无法完全满足企业日益严苛的安全需求。为了确保云上资源的安全性&…

WebGL进阶(十一)层次模型

理论基础&#xff1a; 效果&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…

vscode下面python调试报错ImportError: cannot import name ‘Literal‘ from ‘typing‘

1 问题描述 我在vscode下面编写python程序&#xff0c;这个程序是在一个英伟达anoconda环境下的项目。之前能运行能调试&#xff0c;最近发现只能运行ctlf5&#xff0c;但是使用f5进行调试时&#xff0c;报错“File “c:\Users\86137.vscode\extensions\ms-python.debugpy-202…

(免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在大学生在线计算机类专业考研学习网站管理的要求下&#xff0c;开发一…

Android 常用命令和工具解析之GPU相关

目录 1、GPU基本信息 1.1 获取GPU基本信息 1.2 伪造GPU基本信息 2、GPU内存信息 3、经典案例 案例1&#xff1a;GPU伪造信息方案 案例2&#xff1a;GPU内存统计算法 GPU 指的是 Graphics Processing Unit&#xff0c;即图形处理单元。GPU 是一种专门用于处理图形和图像相…

day03(单片机高级)RTOS

目录 RTOS(实时操作系统) 裸机开发模式 轮询方式 前后台&#xff08;中断方式&#xff09; 改进&#xff08;前后台&#xff08;中断&#xff09;&#xff09;定时器 裸机进一步优化 裸机的其他问题 RTOS的概念 什么是RTOS 为什么要使用 RTOS RTOS的应用场景 RTOS的…

cookie反爬----普通服务器,阿里系

目录 一.常见COOKIE反爬 普通&#xff1a; 1. 简介 2. 加密原理 二.实战案例 1. 服务器响应cookie信息 1. 逆向目标 2. 逆向分析 2. 阿里系cookie逆向 1. 逆向目标 2. 逆向分析 实战&#xff1a; 无限debugger原理 1. Function("debugger").call() 2. …