zoukankan      html  css  js  c++  java
  • ionic+AnjularJs实现省市县三级联动效果

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

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

    <div class="list">
                <div class="list" style="border: 0;">
                    <label class="item item-input item-select" style="border: 0">
                        <div class="input-label">
                            <span><span style="color: #6e6e6e"> </span></span>
                        </div>
                        <select style="font-size: 16px" ng-model="data.currentProvinceId"
                                ng-options="pp.Id as pp.RegionName for pp in allProvinces"
                                ng-change="switchProvince(data.currentProvinceId)">
                        </select>
    
                    </label>
                </div>
                <div class="list" style="border: 0">
                    <label class="item item-input item-select" style="border: 0">
                        <div class="input-label">
                            <span><span style="color: #6e6e6e"> </span></span>
                        </div>
                        <select style="font-size: 16px" ng-options="cc.Id as cc.RegionName for cc in cities"
                                ng-model="data.currentCityId" ng-change="switchCity(data.currentCityId)">
                        </select>
                    </label>
                </div>
                <div class="list" style="border: 0">
                    <label class="item item-input item-select" style="border: 0">
                        <div class="input-label">
                            <span style="color: #6e6e6e"> </span>
                        </div>
                        <select style="font-size: 16px" ng-options="aa.Id as aa.RegionName for aa in areas"
                                ng-model="data.currentAreaId" ng-change="switchArea(data.currentAreaId)">
                        </select>
                    </label>
                </div>
    
            </div>
    

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

    .controller('selectCityCtrl', function ($rootScope, $scope, $state, $filter, $ionicHistory, selectCitySvc, storageSvc, scollImageSvc, classIficationItemSvc) {
    
        $scope.currentCity = selectCitySvc.getCurrentCity();
    
        $scope.allRegions = selectCitySvc.getCacheAllAreas();
    
        $scope.allProvinces = [
            {Id: 0, RegionName: '请选择省份'}
        ];
    
        $scope.cities = [
            {Id: 0, RegionName: '请选择城市'}
        ];
    
        $scope.areas = [
            {Id: 0, RegionName: '请选择区/县'}
        ];
    
        $scope.data = {
            selectName: "",
            currentProvinceId: 0,
            currentCityId: 0,
            currentAreaId: 0
        };
    
        function getSelectedRegionId() {
            var regionId = $scope.data.currentAreaId;
            if (regionId == 0) {
                regionId = $scope.data.currentCityId;
            }
            if (regionId == 0) {
                regionId = $scope.data.currentProvinceId;
            }
            return regionId;
        }
    
        function updateSelectRegionName() {
            var currentRegion = $filter('filter')($scope.allRegions, {Id: getSelectedRegionId()}, true)[0];
            if (currentRegion) {
                $scope.data.selectName = currentRegion.RegionName
            } else {
                $scope.data.selectName = '';
            }
        }
    
        $scope.switchProvince = function (currentProvinceId) {
            $scope.data.currentCityId = 0;
            $scope.data.currentAreaId = 0;
    
            $scope.cities.splice(1);
            $scope.areas.splice(1);
    
            var cities = $filter('filter')($scope.allRegions, {RegionType: 1, ParentId: currentProvinceId});
            for (var i in cities) {
                $scope.cities.push(cities[i]);
            }
    
            updateSelectRegionName();
        };
    
        $scope.switchCity = function (currentCityId) {
            $scope.data.currentAreaId = 0;
    
            $scope.areas.splice(1);
    
            var areas = $filter('filter')($scope.allRegions, {RegionType: 2, ParentId: currentCityId});
            for (var i in areas) {
                $scope.areas.push(areas[i]);
            }
    
            updateSelectRegionName();
        };
    
        //增加当切换县区的时候更换服务区名
        $scope.switchArea = function (currentAreaId) {
            updateSelectRegionName();
        };
    
        var allProvinces = $filter('filter')($scope.allRegions, {RegionType: 0});
        for (var i in allProvinces) {
            $scope.allProvinces.push(allProvinces[i]);
        }
    
        if ($scope.currentCity.RegionType == 0) {
            // 如果上次选择省份
            $scope.data.currentProvinceId = $scope.currentCity.Id;
            $scope.switchProvince($scope.currentCity.Id);
        } else if ($scope.currentCity.RegionType == 1) {
            var province = $filter('filter')($scope.allRegions, {Id: $scope.currentCity.ParentId}, true)[0];
            $scope.data.currentProvinceId = province.Id;
            //省份
            $scope.switchProvince(province.Id);
            $scope.data.currentCityId = $scope.currentCity.Id;
            $scope.switchCity($scope.currentCity.Id);
        } else if ($scope.currentCity.RegionType == 2) {
            // 如果上次选择县区
            var city = $filter('filter')($scope.allRegions, {Id: $scope.currentCity.ParentId}, true)[0];
            var province = $filter('filter')($scope.allRegions, {Id: city.ParentId}, true)[0];
    
            $scope.data.currentProvinceId = province.Id;
            $scope.switchProvince(province.Id);
            $scope.data.currentCityId = city.Id;
            $scope.switchCity(city.Id);
            $scope.data.currentAreaId = $scope.currentCity.Id;
        }
        $scope.user = {
            province: "" || storageSvc.load('province.RegionName'),
            city: "" || storageSvc.load('city.RegionName'),
            area: "" || storageSvc.load('area.RegionName'),
            currentCity: "" || storageSvc.load('selectCitySvc.getCurrentCity()')
    
        };
    
    });
    

    3.效果如图:

           

  • 相关阅读:
    Linux定时任务
    linux文件权限
    grep awk sed 三剑客
    用户管理
    find查找inode号删除文件
    find 查找文件或目录 及du命令
    11、注册新用户
    10、密码扩展,使用Flask-Login认证用户
    9、大型程序的结构
    8、目前flask程序结构
  • 原文地址:https://www.cnblogs.com/xiaojun-zxj/p/4766704.html
Copyright © 2011-2022 走看看