1. 建议对ionicAnjularJs有一定了解的人可以用到,很多时候我们要用到选择省份、城市、区县的功能,现在就跟着我来实现这个功能吧,用很少的代码(我这里是根据客户的要求,只显示想要显示的部分省份和其相对应的城市、区县,并且这些数据将通过后台放入数据库,并没有引用完整的城市js

1.首先在所需要的HTML页面需要这些代码,其中的样式都是自己定义的,不喜欢的可以按照自己喜好来写:

  1. <div class="list">
  2. <div class="list" style="border: 0;">
  3. <label class="item item-input item-select" style="border: 0">
  4. <div class="input-label">
  5. <span><span style="color: #6e6e6e"> </span></span>
  6. </div>
  7. <select style="font-size: 16px" ng-model="data.currentProvinceId"
  8. ng-options="pp.Id as pp.RegionName for pp in allProvinces"
  9. ng-change="switchProvince(data.currentProvinceId)">
  10. </select>
  11.  
  12. </label>
  13. </div>
  14. <div class="list" style="border: 0">
  15. <label class="item item-input item-select" style="border: 0">
  16. <div class="input-label">
  17. <span><span style="color: #6e6e6e"> </span></span>
  18. </div>
  19. <select style="font-size: 16px" ng-options="cc.Id as cc.RegionName for cc in cities"
  20. ng-model="data.currentCityId" ng-change="switchCity(data.currentCityId)">
  21. </select>
  22. </label>
  23. </div>
  24. <div class="list" style="border: 0">
  25. <label class="item item-input item-select" style="border: 0">
  26. <div class="input-label">
  27. <span style="color: #6e6e6e"> </span>
  28. </div>
  29. <select style="font-size: 16px" ng-options="aa.Id as aa.RegionName for aa in areas"
  30. ng-model="data.currentAreaId" ng-change="switchArea(data.currentAreaId)">
  31. </select>
  32. </label>
  33. </div>
  34.  
  35. </div>

2.相应的控制器controller.js里:

  1. .controller('selectCityCtrl', function ($rootScope, $scope, $state, $filter, $ionicHistory, selectCitySvc, storageSvc, scollImageSvc, classIficationItemSvc) {
  2.  
  3. $scope.currentCity = selectCitySvc.getCurrentCity();
  4.  
  5. $scope.allRegions = selectCitySvc.getCacheAllAreas();
  6.  
  7. $scope.allProvinces = [
  8. {Id: 0, RegionName: '请选择省份'}
  9. ];
  10.  
  11. $scope.cities = [
  12. {Id: 0, RegionName: '请选择城市'}
  13. ];
  14.  
  15. $scope.areas = [
  16. {Id: 0, RegionName: '请选择区/县'}
  17. ];
  18.  
  19. $scope.data = {
  20. selectName: "",
  21. currentProvinceId: 0,
  22. currentCityId: 0,
  23. currentAreaId: 0
  24. };
  25.  
  26. function getSelectedRegionId() {
  27. var regionId = $scope.data.currentAreaId;
  28. if (regionId == 0) {
  29. regionId = $scope.data.currentCityId;
  30. }
  31. if (regionId == 0) {
  32. regionId = $scope.data.currentProvinceId;
  33. }
  34. return regionId;
  35. }
  36.  
  37. function updateSelectRegionName() {
  38. var currentRegion = $filter('filter')($scope.allRegions, {Id: getSelectedRegionId()}, true)[0];
  39. if (currentRegion) {
  40. $scope.data.selectName = currentRegion.RegionName
  41. } else {
  42. $scope.data.selectName = '';
  43. }
  44. }
  45.  
  46. $scope.switchProvince = function (currentProvinceId) {
  47. $scope.data.currentCityId = 0;
  48. $scope.data.currentAreaId = 0;
  49.  
  50. $scope.cities.splice(1);
  51. $scope.areas.splice(1);
  52.  
  53. var cities = $filter('filter')($scope.allRegions, {RegionType: 1, ParentId: currentProvinceId});
  54. for (var i in cities) {
  55. $scope.cities.push(cities[i]);
  56. }
  57.  
  58. updateSelectRegionName();
  59. };
  60.  
  61. $scope.switchCity = function (currentCityId) {
  62. $scope.data.currentAreaId = 0;
  63.  
  64. $scope.areas.splice(1);
  65.  
  66. var areas = $filter('filter')($scope.allRegions, {RegionType: 2, ParentId: currentCityId});
  67. for (var i in areas) {
  68. $scope.areas.push(areas[i]);
  69. }
  70.  
  71. updateSelectRegionName();
  72. };
  73.  
  74. //增加当切换县区的时候更换服务区名
  75. $scope.switchArea = function (currentAreaId) {
  76. updateSelectRegionName();
  77. };
  78.  
  79. var allProvinces = $filter('filter')($scope.allRegions, {RegionType: 0});
  80. for (var i in allProvinces) {
  81. $scope.allProvinces.push(allProvinces[i]);
  82. }
  83.  
  84. if ($scope.currentCity.RegionType == 0) {
  85. // 如果上次选择省份
  86. $scope.data.currentProvinceId = $scope.currentCity.Id;
  87. $scope.switchProvince($scope.currentCity.Id);
  88. } else if ($scope.currentCity.RegionType == 1) {
  89. var province = $filter('filter')($scope.allRegions, {Id: $scope.currentCity.ParentId}, true)[0];
  90. $scope.data.currentProvinceId = province.Id;
  91. //省份
  92. $scope.switchProvince(province.Id);
  93. $scope.data.currentCityId = $scope.currentCity.Id;
  94. $scope.switchCity($scope.currentCity.Id);
  95. } else if ($scope.currentCity.RegionType == 2) {
  96. // 如果上次选择县区
  97. var city = $filter('filter')($scope.allRegions, {Id: $scope.currentCity.ParentId}, true)[0];
  98. var province = $filter('filter')($scope.allRegions, {Id: city.ParentId}, true)[0];
  99.  
  100. $scope.data.currentProvinceId = province.Id;
  101. $scope.switchProvince(province.Id);
  102. $scope.data.currentCityId = city.Id;
  103. $scope.switchCity(city.Id);
  104. $scope.data.currentAreaId = $scope.currentCity.Id;
  105. }
  106. $scope.user = {
  107. province: "" || storageSvc.load('province.RegionName'),
  108. city: "" || storageSvc.load('city.RegionName'),
  109. area: "" || storageSvc.load('area.RegionName'),
  110. currentCity: "" || storageSvc.load('selectCitySvc.getCurrentCity()')
  111.  
  112. };
  113.  
  114. });

3.效果如图:

       

ionic+AnjularJs实现省市县三级联动效果的更多相关文章

  1. jQuery - 全国省市县三级联动

    最近有空用jquery做了一个全国省市县的三级联动,在以后或许可以用的到 ,遗憾的是我还没用封装,等有空看能不能封装成一个插件 废话不多说,贴上代码: <!doctype html> &l ...

  2. wex5 实战 省市县三级联动与地址薄同步

    无论是商城,还是快递,都要用到省市县三级联动,和地址薄,今天就以实战来制作,难点有3个: 1:三级联动,有wex5组件实现,相对简单,实战里对行数据进行了拼接 2:  地址薄选项,利用inputSel ...

  3. php仿经典省市县三级联动

    之前有个需求要写个类似省市县三级联动的页面,于是,网上找了点资料看了下,其实原理很简单: 当我们选择一级栏目中某条记录的时候,会获取该栏目的vaule值,并发起ajax请求,后台根据这个vaule值, ...

  4. 项目总结01:JSP mysql SpringMvc下中国省市县三级联动下拉框

    JSP mysql SpringMvc下中国省市县三级联动下拉框 关键词 JSP  mysql数据库  SpringMvc  ajax   Controller层  Service层  中国地区  省 ...

  5. 省市县三级联动 sql语句

    发现在网上的省市县三级联动大部分是mysql的.就算是sqlserver的,也不准确.于是就把mysql的给改了下,适用sqlserver.sql语句如下: CREATE TABLE Dic_Area ...

  6. Android 省市县 三级联动(android-wheel的使用)[转]

    转载:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个控件,以为 ...

  7. Android 省市县 三级联动(android-wheel的使用)

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/23382805 今天没事跟群里面侃大山,有个哥们说道Android Wheel这个 ...

  8. PyQt5--基础篇:用eric6工具实现三级联动效果

    今天给大家介绍下python gui界面的三级联动效果,我们用工具eric6来实现,先看下效果图. 首先我们先创建项目linkage,再新建窗体进入到Qt设计师工具开始设计界面,完成后保存并退出. 在 ...

  9. js之省市区(县)三级联动效果

    省市区(县)三级联动效果,是我们软件开发比较常用的,特别是对一些crm,erp之类,当然也包括其他的后台管理系统,基本都涉及到,今天贴出这个常用的,方便个人复用和大家使用 <!DOCTYPE h ...

随机推荐

  1. 解决 jQuery UI datepicker z-index默认为1 的问题

    最近碰到页面日期选择控件被页头挡住的问题,我们这个客户的电脑是宽屏的,上下窄,屏幕又小,导致他点击日期选择控件时,无法选择到月份.如图: 分析造成这个问题的原因: 我们页头部分的z-index设置为1 ...

  2. 如何用jQuery实现div随鼠标移动而移动(详解)?----2017-05-12

    重点是弄清楚如何获取鼠标现位置与移动后位置,div现在位置与移动后位置: 用jQuery实现div随鼠标移动而移动,不是鼠标自身的位置!!而是div相对于之前位置的移动 代码如下:(注意看绿色部分的解 ...

  3. 服务器数据库挂掉 Can 't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock '(2) ";

    刚刚遇到这个报错,我无语了,我这么个菜逼,咋解决,还好师兄(付付)解决了,付付真棒,在此记录一下,以供学习 Can 't connect to local MySQL server through s ...

  4. Nginx http和https 共存

    nginx https 配置,添加证书启动https server { listen default_server; listen ; server_name _; ssl on; ssl_certi ...

  5. How to change current process to background process

    Situation: there is a script or command is running, but we need to close current box/windows to do o ...

  6. Linux C 程序的开发环境

    1.开发环境的构成 编辑器 vim,vi 编译器 gcc 调试器 gdb 函数库glibc 系统头文件glibc_header 2.gcc编译器 功能强大.性能优越的多平台编译器,gcc可以将c.c+ ...

  7. Ehcache 整合Spring 使用页面、对象缓存(1)

    转自:http://www.cnblogs.com/hoojo/archive/2012/07/12/2587556.html Ehcache在很多项目中都出现过,用法也比较简单.一般的加些配置就可以 ...

  8. Lua学习(3)——控制结构

    Lua提供了一组传统的,小巧的控制结构,包括用于条件执行的if,用于迭代的while.repeat和for.所有的控制结构都有一个现实的终止符号:if for while 都以end结尾,repeat ...

  9. Angular Route导航

    我们用Angular cli创建带有路由的新项目 ng new router --routing Angular Routes API文档 Angular的文档中有详细的解释: 1)https://a ...

  10. 【java8】慎用java8的foreach循环

    虽然java8出来很久了,但是之前用的一直也不多,最近正好学习了java8,推荐一本书还是不错的<写给大忙人看的javase8>.因为学习了Java8,所以只要能用到的地方都会去用,尤其是 ...