Ionic 2 Popover解雇

时间:2016-08-26 20:39:01

标签: javascript angular typescript ionic2 ionic3

我有一个popover,它将我带到另一个页面,在那里我弹回到根页面(popToRoot),在事件上重新加载data / dom然后在json数据从jen数据返回时解除promise中的弹出窗口服务器。如果我在解雇时有一个很大的超时,那一切都正常。

  dismissPopup() {
    if (this.popover) {
      let that = this;
      setTimeout(function () {
        that.popover.dismiss();
      }, 500);
    }
  }

如果我将超时设置得太低,比如说100毫秒,则不会因为dom仍在加载而消失。

但是,我认为暂停可能是最好的做法。如果有人设计缓慢,时间不够,会发生什么?

任何人都可以提出任何建议吗?我应该检测dom何时加载,然后调用dismiss?如何检查dom是否已加载?

由于

2 个答案:

答案 0 :(得分:5)

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

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]);
});

答案 1 :(得分:2)

也可以通过调用ViewController上的dismiss()方法从popover的视图中解除popover

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