首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ionic 2 Popover dismiss

Ionic 2 Popover dismiss
EN

Stack Overflow用户
提问于 2016-08-27 04:39:01
回答 2查看 4.5K关注 0票数 3

我有一个弹出窗口,它将我带到另一个页面,在那里我弹回根页面(popToRoot),重新加载事件上的数据/dom,然后当json数据从服务器返回时,关闭promise中的弹出窗口。如果我在调用时超时很长,这一切都可以正常工作。

代码语言:javascript
复制
  dismissPopup() {
    if (this.popover) {
      let that = this;
      setTimeout(function () {
        that.popover.dismiss();
      }, 500);
    }
  }

如果我将超时设置得太低,比如100ms,它不会忽略,因为dom仍在加载中。

然而,我不认为有一个超时可能是最佳实践。如果某人的设计很慢,而且时间不够,会发生什么?

有没有人能提点建议?我是不是应该检测dom什么时候加载,然后再调用dismiss?如何检查dom是否已加载?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-08-27 05:33:57

您可以使用Events,而不是使用超时。通过这样做,您可以在数据从服务器返回时发布和事件(并且一切都已准备就绪),并订阅该事件以了解何时需要取消弹出窗口。

代码语言:javascript
复制
import { Events } from 'ionic-angular';

constructor(public events: Events) {}

// first page (publish an event when data is ready)
events.publish('loading:finished', data);

// second page (listen for the loading finished event)
events.subscribe('loading:finished', (eventData) => {
  // eventData is an array of parameters, so grab our first and only arg
  console.log('Data:', eventData[0]);
});
票数 5
EN

Stack Overflow用户

发布于 2017-10-05 10:10:28

还可以通过调用ViewController上的dismiss()方法从弹出窗口的视图中取消弹出窗口

代码语言:javascript
复制
  constructor(public navParams:NavParams,public navCtrl:NavController,public viewController:ViewController) {
    console.log('Hello PopOverComponent Component');
  }
  blah()
  {
  //do something
    this.viewController.dismiss();
  }

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39174327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档