zoukankan      html  css  js  c++  java
  • Ionic4.x Javascript 扩展 ActionSheet Alert Toast Loading 以及 ionic 手势相 关事件

    1ActionSheet 官方文档:https://ionicframework.com/docs/api/action-sheet

    <ion-header>
      <ion-toolbar>
        <ion-buttons slot="start">
          <ion-back-button defaultHref="/tabs/tab1"></ion-back-button>
        </ion-buttons>
        <ion-title>actionsheet</ion-title>
      </ion-toolbar>
    </ion-header>
    
    <ion-content padding>
    
        <ion-button (click)="showAction()">
          弹出actionSheet
        </ion-button>
    </ion-content>
    import { Component, OnInit } from '@angular/core';
    
    import { ActionSheetController } from '@ionic/angular';
    
    @Component({
      selector: 'app-actionsheet',
      templateUrl: './actionsheet.page.html',
      styleUrls: ['./actionsheet.page.scss'],
    })
    export class ActionsheetPage implements OnInit {
    
      constructor(public actionSheetController: ActionSheetController) {}
    
      ngOnInit() {
      }
    
      async showAction(){
    
        const actionSheet = await this.actionSheetController.create({
          header: '我是actionsheet的标题',
          mode:'ios',   /*修改action的平台*/
          buttons: [{
            text: '删除',
            role: 'destructive',
            icon: 'trash',  
            handler: () => {
              console.log('Delete clicked');
            }
          }, {
            text: '分享',
            icon: 'share',
            handler: () => {
              console.log('Share clicked');
            }
          }, {
            text: '收藏',
            icon: 'heart',
            handler: () => {
              console.log('Favorite clicked');
            }
          }, {
            text: '取消',       
            role: 'cancel',
            handler: () => {
              console.log('Cancel clicked');
            }
          }]
        });
        await actionSheet.present();
    
      }
    
    }

    2Alert 官方文档:https://ionicframework.com/docs/api/alert

    <ion-header>
      <ion-toolbar>
        <ion-buttons slot="start">
          <ion-back-button defaultHref="/tabs/tab1"></ion-back-button>
        </ion-buttons>
        <ion-title>alert</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content padding>
       <ion-button (click)="presentAlert()">
        presentAlert
       </ion-button>
       <ion-button (click)="presentAlertMultipleButtons()">
           确定要删除吗
       </ion-button>
       <ion-button (click)="presentAlertPrompt()">
         alert放表单
      </ion-button>
    </ion-content>
    import { Component, OnInit } from '@angular/core';
    
    import { AlertController } from '@ionic/angular';
    
    @Component({
      selector: 'app-alert',
      templateUrl: './alert.page.html',
      styleUrls: ['./alert.page.scss'],
    })
    export class AlertPage implements OnInit {
    
      constructor(public alertController: AlertController) {}
    
      ngOnInit() {
      }
    
      async presentAlert() {
        const alert = await this.alertController.create({
          header: '提示信息',    
          message: '你已经支付成功了...',
          buttons: ['确认']
        });
    
        await alert.present();
      }
    
      async presentAlertMultipleButtons() {
        const alert = await this.alertController.create({
          header: '提示信息!',
          message: '您确定要删除吗?',
          buttons: [
            {
              text: '取消',
              role: 'cancel',
              cssClass: 'secondary',   //注意自定义class写在全局
              handler: (blah) => {
                console.log('Confirm Cancel: blah');
              }
            }, {
              text: '确定',
              handler: () => {
                console.log('Confirm Okay');
              }
            }
          ]
        });
    
        await alert.present();
      }
    
    
    
      async presentAlertPrompt() {
        const alert = await this.alertController.create({
          header: 'Prompt!',
          inputs: [
            {
              name: 'name1',
              type: 'text',
              placeholder: 'Placeholder 1'
            },
            {
              name: 'name2',
              type: 'text',
              id: 'name2-id',
              value: 'hello',
              placeholder: 'Placeholder 2'
            },
            {
              name: 'name3',
              value: 'http://ionicframework.com',
              type: 'url',
              placeholder: 'Favorite site ever'
            },
            // input date with min & max
            {
              name: 'name4',
              type: 'date',
              min: '2017-03-01',
              max: '2018-01-12'
            },
            // input date without min nor max
            {
              name: 'name5',
              type: 'date'
            },
            {
              name: 'name6',
              type: 'number',
              min: -5,
              max: 10
            },
            {
              name: 'name7',
              type: 'number'
            }
          ],
          buttons: [
            {
              text: 'Cancel',
              role: 'cancel',
              cssClass: 'secondary',
              handler: () => {
                console.log('Confirm Cancel');
              }
            }, {
              text: 'Ok',
              handler: (result) => {    //获取表单输入的值
                console.log(result);
              }
            }
          ]
        });
    
        await alert.present();
      }
    
    
    }

    3Toast 官方文档:https://ionicframework.com/docs/api/toast

    <ion-header>
      <ion-toolbar>
        <ion-buttons slot="start">
          <ion-back-button defaultHref="/tabs/tab1"></ion-back-button>
        </ion-buttons>
        <ion-title>toast</ion-title>
      </ion-toolbar>
    </ion-header>
    
    <ion-content padding>
    
      <ion-button (click)="presentToast()">
        presentToast
      </ion-button>
    
    
      <ion-button (click)="presentToastWithOptions()">
        presentToastWithOptions
      </ion-button>
    
    </ion-content>
    import { Component, OnInit } from '@angular/core';
    
    import { ToastController } from '@ionic/angular';
    @Component({
      selector: 'app-toast',
      templateUrl: './toast.page.html',
      styleUrls: ['./toast.page.scss'],
    })
    export class ToastPage implements OnInit {
      constructor(public toastController: ToastController) {}
      ngOnInit() {
      }
    
      async presentToast() {
        const toast = await this.toastController.create({
          message: '登录成功',
          duration: 2000,
          position: 'middle',
          color:'dark',
          cssClass:'mytoast'    /*cssClass必须写在全局*/
        });
        toast.present();
      }
    
      async presentToastWithOptions() {
        const toast = await this.toastController.create({
          message: 'Click to Close',
          showCloseButton: true,
          position: 'top',
          closeButtonText: 'Done'
        });
        toast.present();
      }
    
    }

    4Loading 官方文档:https://ionicframework.com/docs/api/loading

    <ion-header>
      <ion-toolbar>
        <ion-buttons slot="start">
          <ion-back-button defaultHref="/tabs/tab1"></ion-back-button>
        </ion-buttons>
        <ion-title>loading</ion-title>
      </ion-toolbar>
    </ion-header>
    
    <ion-content padding>
      
    
        <ion-button (click)="presentLoading()">
          presentLoading
        </ion-button>
    
        <ion-button (click)="presentLoadingWithOptions()">
          presentLoadingWithOptions
        </ion-button>
    </ion-content>
    import { Component, OnInit } from '@angular/core';
    
    import { LoadingController } from '@ionic/angular';
    
    @Component({
      selector: 'app-loading',
      templateUrl: './loading.page.html',
      styleUrls: ['./loading.page.scss'],
    })
    export class LoadingPage implements OnInit {
      constructor(public loadingController: LoadingController) {}
    
      ngOnInit() {
      }
    
      async presentLoading() {
        const loading = await this.loadingController.create({
          message: '加载中...',
          duration: 5000
        });
        await loading.present();
    
    
        //事件
        await loading.onDidDismiss();
        // console.log({ role, data });
        console.log('Loading dismissed!');
      }
    
      async presentLoadingWithOptions() {
        const loading = await this.loadingController.create({
          // spinner: null,
          duration: 5000,   //延迟时间
          message: '请等待...',
          translucent: true,  //半透明的
          cssClass: 'custom-class custom-loading'   //注意自定义样式要写在全局
        });
        return await loading.present();
      }
    
    }

    5Ionic4 手势相关事件

    详情参考:http://www.ionic.wang/article-index-id-155.html 1、首先需要安装 hammerjs

    ionic4 中的 gestures 手势事件包括: tap, press, pan, swipe, rotate, and pinch events 等。详细使用方法参考:

    详情参考:http://www.ionic.wang/article-index-id-155.html

    1、首先需要安装 hammerjs

    npm install hammerjs --save

    2、在项目的 src/main.ts 中引入 hammerjs

    import 'hammerjs';

    3、在项目中使用

    <ion-button (press)="doPress()">
    长按触发的事件
    </ion-button>
    <ion-button (tap)="doTap()">
    点击触发的事件
    </ion-button>

    说明:如果未来的 ionic4.x 版本可以直接使用手势事件的话忽略上面的安装引入过程。

    <ion-header>
      <ion-toolbar>
        <ion-title>gestures</ion-title>
      </ion-toolbar>
    </ion-header>
    
    <ion-content padding>
    
    
      <ion-button (tap)="doTap()">
        点击事件
      </ion-button>
    
    
      <ion-button (press)="doPress()">
        长按事件
      </ion-button>
    
    
      <ion-list>
        <ion-item>
          <ion-label  (press)="doPress()">衣服</ion-label>
        </ion-item>
        <ion-item>
          <ion-label  (press)="doPress()">鞋子</ion-label>
        </ion-item>
    
        <ion-item>
          <ion-label  (press)="doPress()">女装</ion-label>
        </ion-item>
      </ion-list>
    </ion-content>
    import { Component, OnInit } from '@angular/core';
    
    import { AlertController } from '@ionic/angular';
    @Component({
      selector: 'app-gestures',
      templateUrl: './gestures.page.html',
      styleUrls: ['./gestures.page.scss'],
    })
    export class GesturesPage implements OnInit {
    
      constructor(public alertController: AlertController) {}
    
    
      ngOnInit() {
      }
      doTap(){
    
        console.log('tap tap ...')
      }
    
    
      async doPress(){
        const alert = await this.alertController.create({
    
          backdropDismiss:false,
          header: '提示',
          message: '确定要删除吗!',
          buttons: [
            {
              text: '取消',
              role: 'cancel',
              cssClass: 'secondary',
              handler: (blah) => {
                console.log('Confirm Cancel: blah');
              }
            }, {
              text: '确定',
              handler: () => {
                console.log('Confirm Okay');
              }
            }
          ]
        });
        await alert.present();
    
      }
    }

  • 相关阅读:
    [Linux]调整swap
    [Linux]mysql错误总结-ERROR 1067 (42000): Invalid default value for TIMESTAMP
    Canvas动画:地球绕着太阳转
    50个好用的前端框架,建议收藏!
    flex布局属性说明
    纯CSS绘制的图形一览
    深入理解CSS盒模型(转)
    JS的防抖与节流学习笔记
    应用八:Vue之在nginx下的部署实践
    css元素居中的几种方式
  • 原文地址:https://www.cnblogs.com/loaderman/p/10972307.html
Copyright © 2011-2022 走看看