js (vue)实现二级联动

一、一般用法

在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="utf-8" />
      <title></title>
  </head>

<body>/:
   <select id="provice"></select>/:
    <select id="city"></select>
<script type="text/javascript">
   //定义省/直辖市数组
   let arr_province = ["请选择省/直辖市", "北京市", "上海市", "广东省"];
   //定义市/区二维数组
   let arr_city = [
         ["请选择市/区"],
         ["东城区", "西城区", "朝阳区", "宣武区", "昌平区", "大兴区", "丰台区", "海淀区"],
         ['宝山区', '长宁区', '丰贤区', '虹口区', '黄浦区', '青浦区', '南汇区', '徐汇区', '卢湾区'],
         ['广州市', '惠州市', '汕头市', '珠海市', '佛山市', '中山市', '东莞市']
     ];
   let province = document.getElementById("provice");
   let city = document.getElementById("city");
   //初始化菜单
   window.onload = function () {
     province.length = arr_province.length;
     for(let i =0; i < arr_province.length; i++){
       province.options[i].text = arr_province[i]
     }
     city.length = 1;
     city.options[0].text = arr_city[0][0]
   };
   //二级连动
   province.onchange = function () {
     let index = province.selectedIndex;
     city.length = arr_city[index].length;
     for(let i = 0;i<city.length; i++){
       city.options[i].text = arr_city[index][i]
     }
   }
      </script>
</body>
</html>
备注
onchange不要写成onChange

二、二级联动在vue中的使用(固定数据)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、二级联动在vue中获取后台数据的用法

html

<span>案例类别</span>
<select title="first" id="first" class="select" @click="changeLabel($event)">
    <option v-for="(item, index) in firstClass">{{item.name}}</option>
</select>
<select title="second" class="select">
    <option value="" v-for="title in secondClass">{{title.name}}</option>
</select>

js

data(){
  return {
	firstClass:[],
	secondClass:[]
  }
},
mounted () {
   this.caseClass()
},
methods:{
      //一级
      caseClass(){
        axios.get(`${baseUrl}case/category/getCategory/1`).then(data => {
          this.firstClass = data.data.data
        })
      },
      //二级连动
      changeLabel(event) {
        let first = document.getElementById("first");
        let index = first.selectedIndex;
        let firstId = this.firstClass[index].id
        axios.get(`${baseUrl}case/category/${firstId}/1`).then(data => {
          this.secondClass = data.data.data
        })
      }
}

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue.js实现下拉框的二级联动通常涉及到两个组件级别的联动操作,即一个下拉框(一级)的选择会影响另一个下拉框(二级)的数据源。具体步骤如下: 1. **创建数据结构**:首先,你需要定义好数据模型,比如有两个数组,一级下拉框对应选项A,二级下拉框对应选项B,每个A项关联一到多个B项。 ```json { "itemsA": [ { "id": 1, "name": "选项A1", "itemsB": [ {"id": 11, "name": "选项B1"}, {"id": 12, "name": "选项B2"} ] }, { "id": 2, "name": "选项A2", "itemsB": [ {"id": 21, "name": "选项B3"}, {"id": 22, "name": "选项B4"} ] } ], "itemsB": [] } ``` 2. **绑定选择事件**:在Vue实例中,将一级下拉框的`v-model`绑定到一个属性上,如`selectedItemA`,监听这个值的变化。 3. **处理联动逻辑**:当一级下拉框选中的时候,根据`selectedItemA`从服务器或本地获取对应的二级下拉框选项`itemsB`,然后更新视图。 ```javascript <template> <select v-model="selectedItemA"> <!-- 一级下拉框 --> <option v-for="(itemA, index) in itemsA" :key="index" :value="itemA.id">{{ itemA.name }}</option> </select> <select v-model="selectedItemB"> <!-- 二级下拉框 --> <option v-for="(itemB, index) in filteredItemsB" :key="index" :value="itemB.id">{{ itemB.name }}</option> </select> </template> <script> export default { data() { return { itemsA: [], selectedItemA: null, itemsB: [] }; }, computed: { filteredItemsB() { if (this.selectedItemA) { return this.itemsA.find(item => item.id === this.selectedItemA)?.itemsB || []; } else { return this.itemsB; } } }, // ...其他方法和生命周期钩子 }; </script> ``` 4. **添加状态管理**:如果项目规模较大,可能需要配合Vuex来统一管理和传递数据。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值