【问题标题】:What is the ionic2 best practice to show loading, alerts and logs?显示加载、警报和日志的 ionic2 最佳实践是什么?
【发布时间】:2018-03-13 04:42:43
【问题描述】:

我正在寻找 ionic2 最佳实践来显示加载、警报和控制台日志..

所以不要在每个页面中重复下面的代码,这样我就可以调用它一次。

例如显示加载的代码:

  showLoading() {
    this.loading = this.loadingCtrl.create({
      content: ''
    });
    this.loading.present();
  }

最好的做法是创建一个提供程序并显示从最后一个加载的内容吗?或者提供者不支持加载或类似的东西?

谢谢。

【问题讨论】:

    标签: angular typescript ionic2


    【解决方案1】:

    我通常会创建一个 lib 文件夹(如果需要,也可以创建一个模块)。然后,我创建了一些提供程序。对于警报,您可以创建一个提供程序:

    import { Injectable } from '@angular/core';
    import { AlertController } from 'ionic-angular';
    
    @Injectable()
    export class Alert {
    
      constructor(
        public alertCtrl: AlertController
      ) {}
    
      show(title: string, subTitle: string, buttons: Array<string>): void{
        let alert = this.alertCtrl.create({
          title: title,
          subTitle: subTitle,
          buttons: buttons
        });
        alert.present();
      }
    }
    

    或用于加载例如:

    import { HttpClient } from '@angular/common/http';
    import { Injectable } from '@angular/core';
    import { LoadingController } from 'ionic-angular';
    
    @Injectable()
    export class Loader {
    
      loader: any;
    
      constructor(
        public http: HttpClient,
        public loadingCtrl: LoadingController
      ) {}
    
      present(msg = `Please wait...`) {
        this.loader = this.loadingCtrl.create({
          content: "Please wait..."
        });
        this.loader.present();
      }
    
      dismiss() {
        this.loader.dismiss();
      }
    }
    

    然后,您可以在任何具有模块路径映射的组件中重用,例如:

    import { Alert, Toast } from '@lib';
    

    这是最佳实践吗?是的,我认为。您编写的代码更少,并且可以重用您的库提供程序。

    希望我能帮上忙!

    【讨论】:

    • 你是救生员!
    【解决方案2】:

    我通常创建一个 UtilProvider,然后创建一个显示加载对话框的方法,例如:

    public getLoading(message?) {
        if (!message) {
          message = 'Loading...';
        }
        return this.loadCtrl.create({content: message});
      }
    

    您可以添加超时或只返回create,调用present(),然后再调用dismiss()

    我认为将它用于 AlertController 并不是很好,因为您不会处理 de 按钮单击

    【讨论】:

      猜你喜欢
      • 2015-06-20
      • 2018-03-03
      • 2013-11-19
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 2021-08-19
      相关资源
      最近更新 更多