首页 文章

ionic2 AlertController,如何从方法返回按钮点击的值

提问于
浏览
2

我在 Typescript 中相当新,我在提供程序中有以下代码

...
confirm(message, title=""){
        let confirm = this.alertCtrl.create({
            title: title || "Please confirm",
            message: message,
            buttons: [
                {
                  text: 'Yes',
                  handler: () => {
                    return true;
                  }
                },
                {
                  text: 'No',
                  handler: () => {
                    return false;
                  }
                }
              ]
        });

        confirm.present();
    }

UPDATE:

页面中有一个按钮,它调用一个函数 deleteItems

deleteItems(){
    this.popup.confirm("Are you sure you want to delete this item");
    if(this.popup.isTrue == true){
          //delete items
     }

}

我希望 confirm 方法返回true或false,具体取决于单击按钮"Yes"或"No" .

任何人都可以告诉我如何实现这一目标吗?

2 回答

  • 2

    你可以这样做,如下所示 .

    Note: 使用 Provider 创建与UI相关的内容在Ionic2上被视为反模式 . 因为 provider 将处理与服务相关的用例 . 请记住这一点 .

    你想看看替代品吗?请参阅2nd Method of my answer here.换句话说,您可以使用 base class 来处理它 .

    isTrue:boolean=null;
    
        constructor(){}
    
        confirm(message, title=""){
                let confirm = this.alertCtrl.create({
                    title: title || "Please confirm",
                    message: message,
                    buttons: [
                        {
                          text: 'Yes',
                           handler: data => {
                                 this.isTrue=true;
                          }
                        },
                        {
                          text: 'No',
                         handler: data => {
                                  this.isTrue=false;
                          }
                        }
                      ]
                });
    
                confirm.present();
            }
    
  • 1

    两个按钮都是一个处理程序 . 我会使用处理程序来设置 a .

    定义箭头功能

    a:boolean;
    onYesHandler = ()=>{
       this.a = true;
    }
    
    onNoHandler = () =>{
       this.a = false;
    }
    

    confirm 函数带上处理程序和消息:

    confirm(message, yesHandler,noHandler,title=""){
            let confirm = this.alertCtrl.create({
                title: title || "Please confirm",
                message: message,
                buttons: [
                    {
                      text: 'Yes',
                      handler: yesHandler
                    },
                    {
                      text: 'No',
                      handler: noHandler
                    }
                  ]
            });
    
            confirm.present();
        }
    

    调用 confirm 函数:

    this.popup.confirm("Are you sure you want to delete this item",this.onYesHandler,this.onNoHandler);
    

相关问题