应无所住,而生其心
排名
1
文章
861
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

Vue.js 实现省市联动

5408人阅读 2019/1/13 21:21 总访问:5231698 评论:0 收藏:0 手机
分类: Js相关




HTML代码 

  1.     <div id="pro_citys">
  2.  
  3.         省:<select id="provice" v-on:change="prochange()">
  4.             <option v-for="pitem in parray" v-bind:value="pitem.Id">{{ pitem.Name }}
  5.             </option>
  6.         </select>
  7.  
  8.         市:
  9.            <select id="city">
  10.                <option v-for="pitem in citys" v-bind:value="pitem.Id">{{ pitem.Name }}
  11.                </option>
  12.            </select>
  13.  
  14.     </div>


JS代码    

  1. (function ({
  2.  
  3.             $.get("ProviceHandler.ashx"function (result{
  4.  
  5.                 //需要把json字符串转换成json数组对象
  6.                 var jsonarray = JSON.parse(result);
  7.  
  8.                 //vue实例
  9.                 var pvue = new Vue({
  10.                     el"#pro_citys",
  11.                     data: {
  12.                         parray: jsonarray, //省存放的数据
  13.                         citys: []  //城市存放的数据
  14.                     },
  15.                     methods: {
  16.                         prochangefunction ({
  17.  
  18.                             //查询数据,然后给该省下面的城市赋值
  19.                             this.$data.citys = getCityByPid($("#provice").val());
  20.                         }
  21.                     }
  22.                 });
  23.  
  24.             });
  25.  
  26.         });
  27.  
  28.  
  29.         //通过省id查询城市id
  30.         var getCityByPid = function (_pid{
  31.  
  32.             var jsonarray;
  33.  
  34.             $.ajax({
  35.                 asyncfalse,
  36.                 url"CityHandler.ashx",
  37.                 type"get",
  38.                 data: { proviceId: _pid },
  39.                 successfunction (result{
  40.                     //需要把json字符串转换成json数组对象
  41.                     jsonarray = JSON.parse(result);
  42.                 }
  43.             });
  44.  
  45.             return jsonarray;
  46.         }


 一个vue实例里边,可以赋值多个数据,为省市都提供数据

 如果一个vue实例里边有多个数据,要注意Vue的作用范围,绑定的id对应的元素要包含需要使用数据范围里才能作用到

当然vue的实例其实最好不要写到ajax回掉方法里边去,以前写的了好像传的东西也有点问题,暂时就先这样了


 VueJS的事件绑定       

这里使用了v-on:change来为下拉列表框绑定了改变事件,对应的方法就是vue实例里边methods下面的方法:prochange

方法 

  1. v-on:change="prochange()"


  1.  methods: {
  2.         prochangefunction ({
  3.               //查询数据,然后给该省下面的诚实赋值
  4.               this.$data.citys = getCityByPid($("#provice").val());
  5.         }
  6. }

这样做的好处就是如果使用vue里边的方法可以放方便的使用vue实例里边对应的数据

通过this.$data就可以获取    



更新:

获取值也用vue,不用jquery。用vue获取select选中的的值

  1. <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
  2. <script src="~/Scripts/jquery-3.3.1.min.js"></script>
  3. <div id="pro_citys">
  4.     省:<select id="provice" v-on:change="getCitys" v-model="selected">
  5.         <option v-for="item in provices" :value="item.Id">{{item.ProviceName}}</option>
  6.     </select>
  7.     市:
  8.     <select id="city">
  9.         <option v-for="item in citys" :value="item.Id">{{item.CityName}}</option>
  10.     </select>
  11. </div>
  12. <script>
  13.     var vm = new Vue({
  14.         el"#pro_citys",
  15.         data: {
  16.             selected"1",
  17.             provices: [],
  18.             citys: []
  19.         },
  20.         methods: {
  21.             getCitysfunction ({
  22.                 getCItys(vm.$data.selected);
  23.             }
  24.         }
  25.     });
  26.     $.get('/vue/GetProvice'function (result{
  27.         vm.$data.provices = result;
  28.         vm.$data.selected = vm.$data.provices[0].Id;
  29.         getCItys(vm.$data.selected);
  30.     })
  31.     var getCItys = function (pId{
  32.         $.get('/vue/GetCitysProviceId?proviceId=' + pId, function (result{
  33.             vm.$data.citys = result;
  34.         })
  35.     }
  36. </script>

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价