踩iviewui中Select 选择器两级联动,重置查询条件时第二级数据无法清除的坑

小颖公司最近做的项目用的vue+iviewui+axios,在做项目的过程中,遇到一个问题:

二级联动的下拉框,第一个下拉框一直都有值,第二个下拉框是在选择了第一个下拉框之后采取调用ajax获取其值,但当点击重置按钮时,所有的查询条件都要置空,所以这时第二个下拉框的 option 的值也应是空的,但事实是虽然小颖在点击重置按钮时把第二个下拉框的option绑定的值置空了,但它还是能获取到数据,最后定位到问题:
        获取第二个下拉框的值是给第一个下拉框绑定的 on-change 中获取的,所以当先选择了第一个下拉框的值,再获取到第二个下拉框的值,此时再点击重置按钮时,已经触发了第一个下拉框的change事件。最后的解决方法是在on-change中先判断当前第一个下拉框是否有值,有值再去调ajax获取第二个下拉框的值。

无法重置:

<template>
    <Select v-model="whereMap.model1" style="width:200px" @on-change="getCityList2Fun">
        <Option v-for="item in cityList1" :value="item.value" :key="item.value">{{ item.label }}</Option>
    </Select>
    <Select v-model="whereMap.model2" style="width:200px">
        <Option v-for="item in cityList2" :value="item.value" :key="item.value">{{ item.label }}</Option>
    </Select>
  <Button class="search-btn" type="default" @click="searchClear">清空</Button>
</template>
<script>
    export default {
        data () {
            return {
                cityList1: [
                    {
                        value: ‘New York‘,
                        label: ‘New York‘
                    },
                    {
                        value: ‘London‘,
                        label: ‘London‘
                    },
                    {
                        value: ‘Sydney‘,
                        label: ‘Sydney‘
                    },
                    {
                        value: ‘Ottawa‘,
                        label: ‘Ottawa‘
                    },
                    {
                        value: ‘Paris‘,
                        label: ‘Paris‘
                    },
                    {
                        value: ‘Canberra‘,
                        label: ‘Canberra‘
                    }
                ],
                cityList2:[],
                whereMap:{
                  model1: ‘‘,
                  model2: ‘‘,
                }
            }
        },
      methods: {
          getCityList2Fun(){
            this.cityList2=[
                    {
                        value: ‘New York‘,
                        label: ‘New York‘
                    },
                    {
                        value: ‘London‘,
                        label: ‘London‘
                    },
                    {
                        value: ‘Sydney‘,
                        label: ‘Sydney‘
                    },
                    {
                        value: ‘Ottawa‘,
                        label: ‘Ottawa‘
                    },
                    {
                        value: ‘Paris‘,
                        label: ‘Paris‘
                    },
                    {
                        value: ‘Canberra‘,
                        label: ‘Canberra‘
                    }
                ]
          },
            searchClear() {
              this.whereMap={};
              this.cityList2=[];
            }
        }
    }
</script>

修改后:

其实就是修改 getCityList2Fun 方法

getCityList2Fun() {
        if (this.whereMap.model1) {
          this.cityList2 = [
            {
              value: ‘New York‘,
              label: ‘New York‘
            },
            {
              value: ‘London‘,
              label: ‘London‘
            },
            {
              value: ‘Sydney‘,
              label: ‘Sydney‘
            },
            {
              value: ‘Ottawa‘,
              label: ‘Ottawa‘
            },
            {
              value: ‘Paris‘,
              label: ‘Paris‘
            },
            {
              value: ‘Canberra‘,
              label: ‘Canberra‘
            }
          ]
        }
      }

原文地址:https://www.cnblogs.com/yingzi1028/p/11430866.html

时间: 2024-11-08 20:12:07

踩iviewui中Select 选择器两级联动,重置查询条件时第二级数据无法清除的坑的相关文章

故障管理系统--select两级联动查询

写故障管理系统时,根据主类-平台进行故障搜索,需要用到select两级联动查询 我前端技术纯菜鸟,请教了个水平高的同事才搞定,所以记录下来,以免以后再忘了 前端html <form id="tab" class="form-inline" role="form" action='/search/' method='GET' style="float:right;margin-top:-48px;margin-right:0px;&

DropDownList绑定数据表实现两级联动示例

这篇文章主要介绍了DropDownList绑定数据表实现两级联动具体实现,需要的朋友可以参考下 场景一:平时我们在DropDownList控件下添加下拉选项时,都会使用它的Item.Add方法,直接在代码下添加.如果我们想添加或修改下拉选项,则必须去修改源代码.如果几个DropDownList控件的下拉选项相同,我们则需要重复添加好多次,后期的维护工作很不方便. 场景二:我们在12306网站买票时,肯定遇到过这么一种情景:我们需要先选定目的地的省份,选完省份后在城市选框中会自动加载该省份的城市,

JS练习:两级联动

代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>两级联动</title> <script> //准备数据 var provinces = [ ["深圳市", "东莞市", "惠州市", "广州市"], ["长沙市", &quo

Combobox下拉框两级联动

下拉框的两级联动是我们开发中经常遇到一种情况.比如一个学生管理系统中,根据年级.科目及姓名查询学生考试成绩,年级和科目都是硬盘中的有限数据(数据库)而学生则可以有用户手动指定,这时在数据库中有年级和科目两张表,每门科目都对应一个年级,所以我们可以用两个下拉框(Combobox)来存储年级和科目信息来供用户选择.界面如下: 这时如果我们将科目对应的下拉框直接绑定科目表时,用户选择一个年级后还要从所有科目中进行选择就会降低系统的友好性,甚至可能出现没有任何意义的查询语句.我们可以先绑定年级下拉框的数

NET:异步刷新,dropdownlist两级联动, Triggers

PS::我在论坛发了个求助帖子,居然没啥人回..好纠结啊... http://bbs.csdn.net/topics/390809330 目的:三个dropdownlist A  B   C,     要求实现  A  联动 C,   B 联动 C 涉及:ScriptManager .  UpdatePanel ,  Triggers,   AsyncPostBackTrigger ScriptManager 对象集:启用局部呈现 <asp:ScriptManager ID="Script

DropDownList控件:两级联动--【Asp.Net】

最近学习Asp.Net,发现很多控件都很有意思,例如:Canlender,AdRotator等.以前只知道有这样的页面效果,但是对这些控件了解并不多.不怕不知道,就怕不知道. DropDownList,两级联动,做这个demo的时候,让我又爱又恨. 一开始的时候,自己就草草的建立了一个Fresh的数据库,建立了一个Student表如下图所示: 在页面上面放了两个DropDownList,两个SqlDataSource.如下图所示: 下面就需要通过SqlDataSource设置数据源,让DropD

MySQL中不允许使用列别名作为查询条件

在MySQL中有个特殊的规定,即不允许使用列别名作为查询条件.比如有下面一个表: select     ID,     title,     concept,     conceptLength,     addUserId,     modifyTimefrom collections_wisdom 将SQL修改如下: select     ID+1 as newID,     title,     concept,     conceptLength,     addUserId,    

下拉框两级联动

//1.首先获取第一级菜单选中的值 第一级菜单id=select1 var val = $("#select1 option:selected").val() //2.如果第一级下拉框的值改变 $("#select1").change(function(){ //3.清楚第二级下拉框的数据 第二级下拉框的id=select2 $("#select2 > option").each(function(){ i++; if(i==1) retu

Mybatis + mysql 实现两级级联的查询

一.需求:根据Mybatis实现2级级联的查询. 根据省的id查询它下面所有的市信息. 二.实现步骤 方法一: 思想: 此种情况是“一对多”,我们在一的mapper.xml中,用collection定义多的一个集合即可. property ---> 对应实体类中,多的那个子类,list ofType ---> 对应子类的试题类型 column ----> 父类传递给子类查询的外键 select ----> 子类查询的方法 1.定义父类+子类的实体类 package com.imoc