laravel +vue +element組件實現城市的三級聯動


  1. 一般情況,提到聯動,大家可能首先想到就是用遞歸去處理,在這里把處理邏輯大部分放到前端來做,后端我們只需要通過判斷ID來獲取數據並返回給前台,
  2.  這里用到啦三元運算,大家不熟悉的可以自行查閱下三元運算的用法,這里不多做贅述,
  3. 代碼如下:
  4.  1 /*
     2    * 展示三級聯動城市列表
     3    * */
     4 
     5     public function city(Request $request)
     6     {
     7           
     8         $parent_id = $request->get('parent_id') ? $request->get('parent_id') : 1;
     9         $data = City::where('PARENT_ID', $parent_id)->get();
    10         return $data;
    11 
    12     }

     

  5. 前台vue代碼:
  6. 這里大家需要注意VUE  中 created()的用法,和mounted()雖然都是自動加載的方法,有什么區別,大家自行搜索
  7.  
  8. 1 <template>  
    2 <div class="div"> 3 <div class="top"> 4 <el-page-header @back="goBack" content="修改地區"></el-page-header> 5 </div> 6 <div class="tianchun"></div> 7 <div class="fill"></div> 8 <div class="select"> 9 <el-form ref="form" label-width="80px"> 10 <el-form-item label="省:"> 11 <el-select v-model="sheng" placeholder="請選擇省份" @change="loadShi"> 12 <el-option 13 v-for="item in province" 14 :key="item.REGION_CODE" 15 :label="item.REGION_NAME" 16 :value="item.REGION_ID" 17 ></el-option> 18 </el-select> 19 </el-form-item> 20 21 <el-form-item label="市:"> 22 <el-select v-model="shi" placeholder="請選擇市區" @change="loadQu"> 23 <el-option 24 v-for="item in cities" 25 :key="item.REGION_CODE" 26 :label="item.REGION_NAME" 27 :value="item.REGION_ID" 28 ></el-option> 29 </el-select> 30 </el-form-item> 31 32 <el-form-item label="縣:"> 33 <el-select v-model="qu" placeholder="請選擇區縣"> 34 <el-option 35 v-for="item in district" 36 :key="item.REGION_CODE" 37 :label="item.REGION_NAME" 38 :value="item.REGION_ID" 39 ></el-option> 40 </el-select> 41 </el-form-item> 42 </el-form> 43 </div> 44 <div class="button"> 45 <el-button type="warning" style="background-color: #3D7EFF;border-color: #3D7EFF;" @click="gomodify"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 46 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 47 </el-button> 48 &nbsp;&nbsp;&nbsp;&nbsp; 49 <el-button type="success" style="background-color: #3D7EFF;border-color: #3D7EFF;" @click="goBack"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51 </el-button> 52 </div> 53 </div> 54 </template> 55 56 <style scoped> 57 .div { 58 background-color: #f2f2f2; 59 width: 100%; 60 height: auto; 61 } 62 63 .tianchun { 64 width: 100%; 65 height: 6px; 66 } 67 68 .top { 69 width: 100%; 70 height: 45px; 71 padding-left: 10px; 72 padding-top: 20px; 73 background-color: #ffffff; 74 } 75 76 .fill { 77 width: 100%; 78 height: 5px; 79 background-color: #ffffff; 80 padding-top: 15px; 81 } 82 83 .select { 84 background-color: #ffffff; 85 } 86 87 .button { 88 float: right; 89 margin-top: 30px; 90 margin-right: 40px; 91 } 92 </style> 93 94 <script> 95 export default { 96 data() { 97 return { 98 province: [], 99 cities: [], 100 district: [], 101 options: [], 102 sheng: "", 103 shi: "", 104 qu: "", 105 value: "" 106 } 107 },
    108 created() { 109 var that = this; 110 this.$axios.get("/getaddresslist").then(function (response) { 111 that.province = response.data; 112 }); 113 this.loadRegion(1, "sheng"); 114 }, 115 methods: { 116 loadRegion(parent_id, flag) { 117 var that = this; 118 that.$axios 119 .get("/getaddresslist", {params: {parent_id: parent_id}}) 120 .then(function (response) { 121 if ("sheng" == flag) { 122 that.province = response.data; 123 } 124 if ("shi" == flag) { 125 that.cities = response.data; 126 } 127 if ("qu" == flag) { 128 that.district = response.data; 129 } 130 }); 131 }, 132 loadShi(e) { 133 this.loadRegion(e, "shi"); 134 }, 135 loadQu(e) { 136 this.loadRegion(e, "qu"); 137 }, 138 } 146 }; 147 </script>

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM