【问题标题】:Ionic 2 Popover dismissIonic 2 Popover 关闭
【发布时间】:2017-01-03 14:24:36
【问题描述】:

我有一个弹出窗口,它将我带到另一个页面,在那里我弹出回到根页面 (popToRoot),重新加载事件中的数据/dom,然后在 json 数据返回时关闭 Promise 中的弹出窗口服务器。如果我在解雇时有很大的超时时间,这一切都很好。

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

如果我将超时设置得太低,比如 100 毫秒,它不会因为 dom 仍在加载而关闭。

但是,我认为超时可能不是最佳做法。如果有人设计缓慢,时间不够用怎么办?

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

谢谢

【问题讨论】:

  • 这是一个老问题,但您能否将任何答案(如果有帮助)标记为已接受,以便我们关闭它?谢谢:)

标签: javascript angular typescript ionic2 ionic3


【解决方案1】:

您可以使用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]);
});

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-28
      • 1970-01-01
      • 2016-08-26
      • 2018-01-06
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多