• ionic4 ion-modal的用法


    组件内部示例

    <ion-header>
      <ion-toolbar>
        <ion-title>条件筛选</ion-title>
    		<ion-buttons slot="end">
    		   <ion-button (click)="cancel()">
    		      <ion-icon name="close"></ion-icon>
    		   </ion-button>
    		</ion-buttons>
      </ion-toolbar>
    </ion-header>
    <ion-content class="searchfiltrate">
    	<div class="box_01-list">
    		<div class="box_01">
    			<h4 class="box_tp">主題</h4>
    			<ol class="box_bt">
    				<li class="l0_ active">全部主題</li><li class="l0_">跨領域設計</li><li class="l0_">傳統工藝</li><li class="l0_">創意產品設計</li>
    			</ol>
    		</div>
    		<div class="box_01">
    			<h4 class="box_tp">年級</h4>
    			<ol class="box_bt">
    				<li class="l0_ active">全部年級</li><li class="l0_">一年級</li><li class="l0_">二年級</li><li class="l0_">三年級</li>
    				<li class="l0_">四年級</li><li class="l0_">五年級</li><li class="l0_">六年級</li><li class="l0_">七年級</li>
    				<li class="l0_">八年級</li><li class="l0_">九年級</li><li class="l0_">高一</li><li class="l0_">高二</li>
    				<li class="l0_">高三</li>
    			</ol>
    		</div>
    		<div class="box_01">
    			<h4 class="box_tp">收費情況</h4>
    			<ol class="box_bt">
    				<li class="l0_ active">全部</li><li class="l0_">免費</li><li class="l0_">收費</li>
    			</ol>
    		</div>
    	</div>
    	<div class="btn_box">
    		<span class="btn_">清空筛选</span>
    		<span class="btn_ sure-btn" (click)="ok()">确定</span>
    	</div>
    </ion-content>
    import { Component, OnInit } from '@angular/core';
    import { ModalController, NavParams } from '@ionic/angular';
    
    @Component({
    	selector: 'app-searchmodal',
    	templateUrl: './searchmodal.page.html',
    	styleUrls: ['./searchmodal.page.scss']
    })
    export class SearchmodalPage implements OnInit {
    	public searchfiltrate = ['000'];
    	constructor(public modalController: ModalController,public navParams: NavParams) {
    		//this.navParams 通过这个获取父页面的传值
    		console.log(this.navParams);    
    	}
    
    	ngOnInit() {}
    	cancel() {//取消
    		this.modalController.dismiss({
    			result: 'modal_cancel'
    		});
    	}
    	ok() {//确定
    		this.modalController.dismiss({
    			result: this.searchfiltrate
    		});
    	}
    }
    

      调用示例:

    import { Component, ViewChild } from '@angular/core';
    import { IonInfiniteScroll, ModalController } from '@ionic/angular';
    import { Router } from '@angular/router';
    import { SearchmodalPage } from '../module/searchmodal/searchmodal.page';
    
    @Component({
    	selector: 'app-tab1',
    	templateUrl: 'tab1.page.html',
    	styleUrls: ['tab1.page.scss']
    })
    export class Tab1Page {
    	@ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll;
    	public list = [];
    	public total = 30; //总条数
    	public pageindex = 0; //页数
    	public pageSize = 10; //每页条数
    	public hasMore = false; //是否显示更多数据
    	public searchobj = {roleText:null,subjectText:null}
    	constructor(public router: Router, public modalController: ModalController) {}
    	ngOnInit(): void {
    		this.getData(this.pageindex); //页面初始化的时候加载数据
    	}
    	searchchange(msg){ //接收子组件的搜索参数
    		console.log(msg)
    	}
    	searchfiltrate(msg){ //子组件传递参数执行父组件的方法
    		console.log(msg)
    		if(msg)this.presentModal();
    	}
    	async presentModal() {
    		const modal = await this.modalController.create({
    			showBackdrop:true,
    			component: SearchmodalPage,
    			componentProps: { value: 123 }
    		});
    		await modal.present();
    	   //监听销毁的事件
    	   const { modalData } = await modal.onDidDismiss(); //获取关闭传回的值
    	   console.log(modalData);
    	}
    	doRefresh(event) { //下拉刷新
    		this.pageindex = 0;
    		setTimeout(() => {
    			this.list = [];
    			for (let i = 0; i < (this.pageindex + 1) * this.pageSize; i++) {
    				this.list.push(i);
    			}
    			event.target.complete();
    			this.hasMore = false;
    		}, 500);
    	}
    	loadData(event) {
    		//加载更多数据
    		setTimeout(() => {
    			this.pageindex = this.pageindex + 1;
    			this.getData(event); //加载更多数据
    			this.infiniteScroll.complete();
    		}, 500);
    	}
    	getData(event) {
    		//加载更多数据
    		let start = this.pageindex * this.pageSize;
    		let end = (this.pageindex + 1) * this.pageSize;
    		if (end > this.total) {
    			end = this.total;
    		}
    		for (let i = start; i < end; i++) {
    			this.list.push(i);
    		}
    		if (this.list.length == this.total) {
    			this.hasMore = true;
    			//this.infiniteScroll.disabled = true;
    		}
    	}
    	todetails(obj) {
    		this.router.navigate(['/details'], { queryParams: obj });
    	}
    	ngOnDestroy() {
    		//组件销毁
    	}
    }
    

      

  • 相关阅读:
    Google recaptcha在webform中的使用
    User control's property loses value after a postback
    share memory cache across multi web application
    Losing session data in ASP.NET
    What is the difference between UserControl, WebControl, RenderedControl and CompositeControl?
    maven跳过单元测试-maven.test.skip和skipTests的区别
    @RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
    SpringBoot-@PathVariable
    pick王菊?作为“菊外人”的程序员能做点什么?
    数据库CRUD操作
  • 原文地址:https://www.cnblogs.com/mary-123/p/10935137.html
Copyright © 2020-2023  润新知