美文网首页
Ionic4 + Angualr 自定义三级联动

Ionic4 + Angualr 自定义三级联动

作者: 爱兜圈的白茶 | 来源:发表于2020-07-09 13:31 被阅读0次

效果:

html:

     <div class="address-content">

    <ion-col class="col">

      <ion-slides class="list"  pager="false" [options]="proviceOpt" #provice (ionSlideTouchEnd)= "proviceTouchEnd()">

        <ion-slide *ngFor="let item of proviceList">

          <div class="new-li">{{item}}</div>

        </ion-slide>

      </ion-slides>

    </ion-col>

    <ion-col class="col">

      <ion-slides class="list"  pager="false" [options]="cityOpt" #city (ionSlideTouchEnd)= "cityTouchEnd()">

        <ion-slide *ngFor="let item of cityList">

          <div class="new-li">{{item}}</div>

        </ion-slide>

      </ion-slides>

    </ion-col>

    <ion-col class="col">

      <ion-slides class="list"  pager="false" [options]="areaOpt" #area (ionSlideTouchEnd)= "areaTouchEnd()">

        <ion-slide *ngFor="let item of areaList">

          <div class="new-li">{{item}}</div>

        </ion-slide>

      </ion-slides>

    </ion-col>

  </div>

css:

.address-content{

        display: flex;

        flex-direction: row;

        justify-content: space-between;

        height: 100%;

        color:#333333;

        .col{

            display: flex;

            align-items: center;

            overflow: hidden;

            padding: rem(8) 0;

            .list{

                height: rem(35);

                line-height: rem(35);

                font-size: rem(14);

                align-items: center;

                border-top: 1px solid #999999;

                border-bottom: 1px solid #999999;

                color: #999999;

                overflow: initial;

                width: 100%;

                .new-li{

                    font-size: rem(14);

                }

                .swiper-slide-active{

                    color:#333333;

                }

            }

        }

    }

ts:

import { Component, OnInit, ViewChild } from '@angular/core';

import { cityData} from '../../untils/pca.js';  // 引入省市区数据  链接: https://pan.baidu.com/s/1jLaswPqiPkfM7c99XzZbUw 提取码: j8e5 

export class ProfileAddressEditPage implements OnInit {

constructor( ) { }

    @ViewChild('provice') provice: any;

    @ViewChild('city') city: any;

    @ViewChild('area') area: any;

    cityName:string = '北京市-北京市-东城区';  // 初始化城市名

    proviceList = []; // 省列表

    cityList = []; // 城市列表

    areaList = []; // 地区列表

    addressSel = []; // 选中的地址

    proviceOpt = {   

        initialSlide: 0,

        speed: 50000000000,

        direction: 'vertical',

        autoplay: false,

    };

    cityOpt = {

        initialSlide: 0,

        direction: 'vertical',

        autoplay: false

    };

    areaOpt = {

        initialSlide: 0,

        direction: 'vertical',

        autoplay: false,

        stopPlay:true

    };

    // 选择省

    proviceTouchEnd() {

        this.provice.stopAutoplay();

        this.provice.getActiveIndex().then(num => {

        this.addressSel[0] = this.proviceList[num]

        this.addressSel[1] = ''

        this.addressSel[2] = ''

        this.getCityListByProvice();

        })

    }

    // 选择市

    cityTouchEnd() {

        this.city.stopAutoplay();

        this.city.getActiveIndex().then(num => {

        this.addressSel[1] = this.cityList[num]

        this.addressSel[2] = ''

        this.getAreaListByCity();

        })

    }

    // 选择地区

    areaTouchEnd() {

        this.area.stopAutoplay();

        this.area.getActiveIndex().then(num => {

        this.addressSel[2] = this.areaList[num]

        })

    }

    // 根据已选省获取当前城市列表

    getCityListByProvice(){

        this.cityList = Object.keys(cityData[this.addressSel[0]]);

        if(this.addressSel[1] == ''){

        this.cityOpt.initialSlide = 0;

        this.addressSel[1] = this.cityList[0];

        }else{

        this.cityList.forEach((item, index) => {

            if (item === this.addressSel[1]) {

            this.cityOpt.initialSlide = index;

            }

        });

        }

        this.getAreaListByCity()

    }

    // 根据已选城市获取当前地区列表

    getAreaListByCity(){

        this.areaList = cityData[this.addressSel[0]][this.addressSel[1]]

        if(this.addressSel[2] == ''){

        this.areaOpt.initialSlide = 0;

        this.addressSel[2] = this.areaList[0];

        }else{

        this.areaList.forEach((item, index) => {

            if (item === this.addressSel[2]) {

            this.areaOpt.initialSlide = index;

            }

        });

        }

    }

    ngOnInit() {

        this.addressSel = this.cityName.split('-');

        this.proviceList = Object.keys(cityData);

        this.proviceList.forEach((item, index) => {

        if (item === this.addressSel[0]) {

            this.proviceOpt.initialSlide = index;

        }

        });

        this.getCityListByProvice();

    }

}

相关文章

网友评论

      本文标题:Ionic4 + Angualr 自定义三级联动

      本文链接:https://www.haomeiwen.com/subject/kugjcktx.html