vue表单联动 +导入数据

本文介绍如何在Vue项目中实现表单联动效果,当选择不同学院时,专业下拉框动态更新。使用了Element UI库,但也可适配普通HTML标签。通过监听select组件的选择变化,更新相关数据,实现数据驱动视图的更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果如下:

在这里插入图片描述在这里插入图片描述
默认选择是计算机学院软件工程,当把第一个下拉框选项改为通信与信息工程学院时
,后边的下拉框选项变化,比如第一项变成了通信工程
注: 使用了elemenui,若不需要,可以改成将标签改为普通HTML标签

实现过程:

  1. select部分:用v-for加载选项列表,选择的选项改变时使用v-on:change定义一个方法跟踪选择值的变化
 <select v-on:change="indexSelectCollege($event)">
            <option v-for="(option1, index1) in college" :value="option1.text" :key="index1">{
   {
   option1.text}}</option>
          </select>
          <select v-on:change="indexSelectProfession($event)">
            <option v-for="(option2, index2) in professionList" :value="option2.text" :key="index2">{
   {
   option2.text}}</option>
  1. method部分:默认选择设置字段 activeCollegeactiveProfession,设置初值后,每次选择改变时,改变他们的值( activeCollegeactiveProfession是当前选择的学院以及专业)
methods: {
   
    indexSelectCollege (event) {
   
      this.joinForm.activeCollege = event.target.value
      console.log(this.joinForm.activeCollege)
    },
    indexSelectProfession (event) {
   
      this.joinForm.activeProfession = event.target.value
      console.log(this.joinForm.activeProfession)
    }
  }
  1. watch部分,监视data中 activeCollege的变化情况, activeCollege变化时,遍历college数组,找出对应的profession数组,更新professionList数组
 watch: {
   
    'joinForm.activeCollege': function () {
   
      for 
### Vue 3 表单联动查询实现方式 在 Vue 3 中,通过利用 `ref` 或 `reactive` 创建响应式数据结构,可以轻松实现表单中的联动查询功能。以下是具体的实现方法以及代码示例。 #### 使用场景描述 假设有一个简单的表单,其中包含两个下拉框:一个是省份选择器 (`province`),另一个是城市选择器 (`city`)。当用户选择了某个省份时,需要根据该省份动态加载对应的城市列[^1]。 --- #### 响应式数据定义 为了使表单数据具有响应性,推荐使用 `ref` 定义基础类型的变量,或者使用 `reactive` 定义复杂对象。这里我们采用 `ref` 来管理选项列和选中值: ```javascript <script setup> import { ref, onMounted } from 'vue'; // 初始化省份列 const provinceList = ref([ { id: 1, name: '北京', cities: ['朝阳区', '海淀区'] }, { id: 2, name: '上海', cities: ['黄浦区', '静安区'] } ]); // 当前选中的省份 ID const selectedProvinceId = ref(null); // 动态加载的城市列 const cityList = ref([]); </script> ``` 上述代码中,`provinceList` 存储了所有的省份及其对应的城市信息;`selectedProvinceId` 记录当前选中的省份 ID;而 `cityList` 则用于存储基于所选省份过滤后的城市列[^3]。 --- #### 数据绑定与事件监听 接下来,在模板部分完成数据绑定并设置事件处理函数。每当用户改变省份的选择时,触发相应的回调函数以更新城市的列: ```html <template> <div class="form-container"> <!-- 省份选择 --> <select v-model="selectedProvinceId" @change="loadCities"> <option value="">请选择省份</option> <option v-for="province in provinceList" :key="province.id" :value="province.id">{{ province.name }}</option> </select> <!-- 城市选择 --> <select v-if="cityList.length > 0" v-model="selectedCity"> <option value="">请选择城市</option> <option v-for="(city, index) in cityList" :key="index">{{ city }}</option> </select> </div> </template> ``` 在此处,`v-model` 将用户的输入同步至组件的状态中,同时通过 `@change` 绑定了一个名为 `loadCities` 的方法来执行后续操作。 --- #### 方法实现 最后一步是在脚本区域编写实际的业务逻辑——即如何依据选定的省份筛选出其下属的所有城市名称,并将其赋给 `cityList` 变量: ```javascript <script setup> // ... (前面已有的导入语句) function loadCities() { const selectedProvince = provinceList.value.find(province => province.id === selectedProvinceId.value); if (selectedProvince) { cityList.value = selectedProvince.cities; } else { cityList.value = []; } } </script> ``` 此段程序首先查找匹配当前被选取之省分的对象实体,接着把找到的结果里的都市数组赋予给了我们的反应型变数 `cityList` 。如果没有任何一项被挑,则清空这个列。 --- #### 总结 以上就是一种典型的 Vue 3 表单联动设计模式。它充分利用了框架内置的支持机制—特别是围绕着那些能自动追踪状态更改进而重新渲染 UI 部件的功能特性来进行构建。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值