使用 Vue+ElementUi 实现省市联动效果

﹏ヽ暗。殇╰゛Y 2022-11-02 13:25 404阅读 0赞

省市联动效果简单描述:在选择省之后,我们可以选择其省对应的市,当没有选择省的时候,市级下拉为无数据。并且在这里将省市对应的id作为本质要存储到数据库当中的数据。
在这里插入图片描述
使用Vue进行开发。首先我们需要使用到两个select选择器,下面都使用elementui组件进行展示。使用到的是一个表单,所以进行绑定时使用OrderSreach.属性值进行 绑定
在这里插入图片描述
之后将所需要展示的地市进行定义到data当中,定义一个方法用于获取这个省的选择之后的id,根据这个id对城市数组进行过滤,之后再使用watch对省的这个值进行侦听,改变之后就调用这个方法计算得出城市数组进行渲染。简易代码如下:

  1. <template>
  2. <div>
  3. <!-- 省份选择 -->
  4. <el-select v-model="selectedProv">
  5. <el-option v-for="item in listProv" :label="item.name" :value="item.id" :key="item.id"></el-option>
  6. </el-select>
  7. <!-- 城市选择 -->
  8. <el-select v-model="selectedCity">
  9. <el-option v-for="item in listCity" :value="item.id" :key="item.id" :label="item.name"></el-option>
  10. </el-select>
  11. </div>
  12. </template>
  13. <script>
  14. export default {
  15. data: function() {
  16. return {
  17. selectedProv: null,
  18. selectedCity: null,
  19. listProv: [],
  20. listCity: [],
  21. //可以发现,这里pid对应的就是省的id值,而id指向这个id对应的城市值
  22. cityAll: [{
  23. "pid": "1",
  24. "id": "1",
  25. "name": "广州"
  26. },
  27. {
  28. "pid": "1",
  29. "id": "2",
  30. "name": "湛江"
  31. },
  32. {
  33. "pid": "2",
  34. "id": "3",
  35. "name": "长沙"
  36. },
  37. {
  38. "pid": "2",
  39. "id": "4",
  40. "name": "湘潭"
  41. }, {
  42. "pid": "3",
  43. "id": "5",
  44. "name": "南宁"
  45. },
  46. {
  47. "pid": "3",
  48. "id": "6",
  49. "name": "梧州"
  50. }
  51. ],
  52. }
  53. },
  54. created: function() {
  55. this.getProvList();
  56. },
  57. watch: {
  58. selectedProv: 'getCityList'
  59. },
  60. methods: {
  61. //获取省份列表
  62. getProvList: function() {
  63. this.listProv = [{
  64. "id": "1",
  65. "name": "广东"
  66. }, {
  67. "id": "2",
  68. "name": "湖南"
  69. }, {
  70. "id": "3",
  71. "name": "广西"
  72. }]
  73. },
  74. // 获取当前选择省份下的城市列表
  75. getCityList: function() {
  76. let vm = this;
  77. this.listCity = this.cityAll.filter(function(city) {
  78. return city.pid == vm.selectedProv
  79. })
  80. }
  81. }
  82. }
  83. </script>

当然了,如果这个选择框使用的是一个对象包裹的属性值,如最上方的图所示,这样我们就需要对这个对象的属性进行侦听,如何实现呢?

在这里我们使用一个computed获取到这个对象的属性值给到Prov,之后对Prov进行侦听即可实现。

  1. //对省份的选择切换进行侦听
  2. watch: {
  3. Prov: 'getCityList'
  4. },
  5. //获取属性,用于侦听
  6. computed: {
  7. Prov() {
  8. return this.OrderSreach.provinceId
  9. }
  10. },

发表评论

表情:
评论列表 (有 0 条评论,404人围观)

还没有评论,来说两句吧...

相关阅读

    相关 省市联动效果 源码下载

    对于省市联动的效果,在大部分的项目我们都会涉及的,开始刚工作的时候真心害怕这个东西。不知道如何下手去写。后来在我们技术老大的带领下用angular写的省市联动效果,真心不错。但