Vue完成三級聯動 地址聯動

Vue實現三級聯動

Html部分:

 

<div class="form-group">

    <div class="col-sm-2 control-label"><span style="color:red;">*</span></div>

    <div class="col-sm-10">

     <!--  <input type="text" class="form-control" v-model="businessUser.province" placeholder="省"/> -->

      <select id="province" class="form-control" @change="findCity()" v-model="addrId" >

                 <option class="default" v-for="addr in address" v-bind:value="addr.id">{{addr.name}}</option> 

              </select>

    </div>

</div>

<div class="form-group">

    <div class="col-sm-2 control-label"><span style="color:red;">*</span></div>

    <div class="col-sm-10">

    <select id="city" class="form-control" @change="findDistrict"   v-model="citysId">

               <option class="default" v-for="city in citys" v-bind:value="city.id">{{city.name}}</option> 

             </select>

    </div>

</div>

<div class="form-group">

    <div class="col-sm-2 control-label"></div>

    <div class="col-sm-10">

    <select id="district" class="form-control" @change="setDistrict" v-model="districtsId">

               <option class="default" v-for="district in districts" v-bind:value="district.id">{{district.name}}</option> 

            </select>

    </div>

</div>

js部分:每點擊一個地區進行賦值

數據:

  addrId:null,

// 前三個用於回顯

citysId:null,

districtsId: null,

//這三個用於展示下拉框

address:{},

    citys:{},

    districts:{},

        dept:{

           

        }

//查詢所有的省

findproven: function(){

$.ajax({

type: "POST",

    url: baseURL + "syscompany/findAddress",

    data: {id:null},

    dataType: "json",

    success: function(r){

     vm.address=r.sysArea;

}

});

},//省觸發事件,查詢市

        findCity: function(value){

vm.dept.province = $("#province option:selected").text();

console.log($("#province option:selected").text());

$.ajax({

type: "POST",

    url: baseURL + "syscompany/findAddress",

    data: {id:vm.addrId},

    dataType: "json",

    success: function(r){

     vm.citys=r.sysArea;

}

});

},

//市觸發事件,查詢縣區

findDistrict: function(){

vm.dept.city = $("#city option:selected").text();

console.log($("#city option:selected").text());

var data="id="+vm.citys.id;

$.ajax({

type: "POST",

    url: baseURL + "syscompany/findAddress",

    data: {id:vm.citysId},

    dataType: "json",

    success: function(r){

     vm.districts=r.sysArea;

}

});

},

//縣區觸發事件,設置縣區的值

setDistrict: function(){

vm.dept.area = $("#district option:selected").text();

console.log(vm.dept.area);

},

 

通過查詢出來的數據循環比較進行賦值從而回顯

 

getInfo: function(id){

$.get(baseURL + "sys/dept/info/"+id, function(r){

                $.get(baseURL + "sys/dept/info/"+vm.dept.deptId, function(r){

                    vm.dept = r.dept;

                    vm.getDept();

                });

    

                

                var province=$("#province option").length;

                for(var i=0;i<province;i++){//遍歷省           

                 if($("#province").get(0).options[i].text == vm.dept.province){

                         vm.addrId = $("#province").get(0).options[i].value;

                         $.ajax({

              type: "POST",

                  url: baseURL + "syscompany/findAddress",

                  data: {id:vm.addrId},

                  dataType: "json",

                  success: function(r){

                   vm.citys=r.sysArea;

                   for(var i = 0; i < vm.citys.length;i++){//遍歷市

                   if(vm.citys[i].name == vm.dept.city){

                   vm.citysId = vm.citys[i].id;

                   $.ajax({

                  type: "POST",

                      url: baseURL + "syscompany/findAddress",

                      data: {id:vm.citysId},

                      dataType: "json",

                      success: function(r){

                       vm.districts=r.sysArea;

                       console.log(vm.districts);

                       for(var i = 0; i < vm.districts.length;i++){//遍歷區

                       if(vm.districts[i].name == vm.dept.area){

                       vm.districtsId = vm.districts[i].id;

                       break;

                       }

                       }

                  }

                      });

                   break;

                   }

                   }

              }

              });

                        break;  

                     }  

                 }

               

            });

},

這種方法回顯比較麻煩,可以集合layui聯動會更加方便,layui+vue的聯動後面會更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章