当前位置:   article > 正文

Vue+ElementUI 实现省市区三级联动_element 省市区

element 省市区

json文件格式

html部分

  1. <el-select size="small" style="width: 170px"
  2. v-model="province"
  3. placeholder="请选择省份(直辖市)"
  4. v-on:change="changeProvince()">
  5. <el-option v-for="item in provinces"
  6. :label="item.label"
  7. :value="item.label" :key="item.value">
  8. </el-option>
  9. </el-select>
  10. <el-select size="small" style="width: 160px;margin-left: 10px"
  11. v-model="city"
  12. placeholder="请选择城市"
  13. v-on:change="changeCity">
  14. <el-option v-for="item in citys"
  15. :label="item.label"
  16. :value="item.label" :key="item.value">
  17. </el-option>
  18. </el-select>
  19. <el-select size="small" style="width: 160px;margin-left: 10px"
  20. v-model="district"
  21. placeholder="请选择区(县)"
  22. v-on:change="changeDistrict">
  23. <el-option v-for="item in districts"
  24. :label="item.label"
  25. :value="item.label" :key="item.value">
  26. </el-option>
  27. </el-select>

js部分

  1. <script>
  2. import axios from 'axios'
  3. export default {
  4. name: "ThingLostManage",
  5. data() {
  6. return {
  7. province:'', // 省
  8. city:'', // 市
  9. district:'', // 区
  10. provinces:[],
  11. citys:[],
  12. districts:[],
  13. }
  14. },
  15. created() {
  16. this.load()
  17. },
  18. mounted(){
  19. this.getJson()
  20. },
  21. methods: {
  22. load() {
  23. },
  24. // 获取城市json
  25. getJson(){
  26. axios.get('/city.json').then(res => {
  27. this.provinces=res.data;
  28. //console.log(this.provinces)
  29. })
  30. },
  31. changeProvince(){
  32. // 切换省,市切换为默认第一个
  33. this.citys = this.provinces.find(s => s.label === this.province).children;
  34. //console.log(this.citys)
  35. if(this.city != null) {
  36. this.city = null;
  37. this.district = null
  38. }
  39. },
  40. changeCity(){
  41. // 切换市,县区切换为默认第一个
  42. this.districts = this.citys.find(s => s.label === this.city).children
  43. //console.log(this.districts)
  44. if(this.district != null) {
  45. this.district = null
  46. }
  47. }
  48. }
  49. }
  50. </script>

运行结果

 注意事项

由于 vue cli3 之后的版本中,所创建的项目结构中没有 static 文件夹,而静态文件的存放位置在 public 中,因此需要将 city.json 文件放在public文件夹中。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/608437
推荐阅读