当前位置: 首页 > 知识库问答 >
问题:

Ionic AlertController作为服务

司寇阳曦
2023-03-14

我已将Ionic 2提示符放置在提供程序(服务)中,如下所示。。

showPromptOk(title, message, callback) {    

       let prompt = this.alertCtrl.create({
          title: title || 'Alert!',
          message: message,
          buttons: [
            {
              text: 'Ok',
              handler: data => {
                if(callback) callback(data);
              }
            }
          ]
        });
        prompt.present();
      }

我这样称呼它。。

updateAccount() {
    let self = this;
    this.sk_account.update(this.account)
      .subscribe((res) => {
          this.sk_utils.showPromptOk('Success!', 'Your account has been updated!',  (res) => {

            self.edit_account = false;
            self.edit_school = false;

          });
        }
      )
  }

问题是,在这种情况下,“this”或“self”不再有效,它成为提供者(服务)的上下文。如何设置处理程序以将“scope”传递回原始调用者,以便在设置值时,它们实际上是在原始组件范围而不是提供程序范围中设置的?

更新1:

添加回调(数据)后,我注意到视图模型不再更新。您可以在控制台中看到值现在设置为false,但是视图上的{{edit_account}}插值没有更新。注意视图上的变量仍然是“true”。有什么想法吗?

共有1个答案

万俟飞语
2023-03-14

尝试使用主题:showPromptOk获取主题,处理程序调用帐户组件中的“下一个方法”,添加主题及其订阅,更新逻辑必须在订阅中

Ps:主题必须是静态的

static AccountMustBeUpdated: Subject<any> = new Subject<any>();

ionViewDidLoad(){
AccoutsPage.AccountMustBeUpdated.subscribe(
() => { /* Your update logic here*/} );

别忘了退订主题以免麻烦

 类似资料:
  • 如何在生产环境中将hazelcast服务器作为linux服务运行? java-server-cp hazelcast。jar com。黑兹卡斯特。例子。StartServer StartServer运行带有输出到std终端的服务器,将其作为linux服务运行并将日志写入文件的最简单方法是什么 我必须将其设置为EC2实例中的服务并将其捆绑。当EC2自动缩放启动实例时,hazelcast服务器将启动并

  • 我希望payara服务器作为服务运行。我以sudo的身份登录asadmin,并使用create-service命令。给出了以下输出。 这将在 /etc/init.d/ 文件夹中创建payara_production脚本,但一旦重新启动计算机,就不会执行此脚本。我必须手动启动payara才能运行它。 “您已经创建了服务,但是您需要自己启动它”是什么意思,我在之前使用的GlassFish版本中没有类似

  • 我从https://download.Redis.io/redis-stable/sentinel.conf下载了sentinel.conf文件,并将其放到默认的Redis安装位置C:\Program Files\Redis。然后对配置文件应用以下更改。 文件更改 端口26379 守护yes 监视mymaster{IP地址}{端口}1 毫秒后向下哨兵mymaster 30000 哨兵并行-同步my

  • 问题内容: 我已经用Java构建了一个小守护进程,我想在Unix(例如Debian 5)下作为服务运行它。我读过有可能使用Java包装器,但是难道没有其他更容易实现的选项吗?我不能只使用Unix命令吗? 问题答案: 好吧,即使您退出外壳程序也要运行Java程序,以下是最简单的方法:

  • 创建一个单独的服务来管理数据(如用户管理),这是一个好的实践吗?实现之后,只有该服务将有权访问用户和其他相关的DB表。所有其他服务都必须调用这个新的用户微服务来执行与用户相关的任务。 这种方法将迫使我们通过添加反规范化来重构DB模式。我们不会得到在多个微服务之间提供的基础表。如果服务器服务需要数据,它将通过微服务共享。

  • 问题内容: 如何将Elastic Kibana(只是批处理文件)安装为Windows服务? 它可能也需要依赖ElasticSearch流程(假设我在同一服务器上运行它) 问题答案: 以下命令将创建名称为“ ElasticSearch Kibana 4.0.1”的服务,并使其依赖于ElasticSearch,因此它不会尝试过早启动。