【问题标题】:Test variable from models来自模型的测试变量
【发布时间】:2020-05-21 16:33:39
【问题描述】:

我正在使用 IONIC 4,我遇到的情况听起来很傻,但我坚持下去了。

我有一个这样的模型类:

export class Media {
  public id: number;
  public name: string;
  public description: string;
  public episode: number;
  public startDate: string;
  public endDate: string;
  public slates: any[];

  constructor() {
    this.id = 0;
    this.name = "";
    this.description = "";
    this.startDate = "";
    this.endDate = "";
    this.episode = 1;
    this.slates = [];
  }
}

当我点击一个按钮时,我打开一个模式来插入这个媒体:

  async goToNewMediaForm() {
    const newMediaModal = await this.modalCtrl.create({
      component: MediaNewPage
    });

    newMediaModal.present();
  }

它打开了媒体的插入页面,基于我在下面发布的类,一切正常。

现在,当用户退出此模式时,我想做一些事情,所以我正在使用这样的东西:

async goToNewMediaForm() {
    const newMediaModal = await this.modalCtrl.create({
      component: MediaNewPage
    });

    newMediaModal.onDidDismiss().then(data => {
        this.navCtrl.navigateForward("slate-list");
    });
    newMediaModal.present();
  }

所以,我所做的就是将用户移动到另一个页面。但是我必须有一种方法来区分用户是单击保存还是只是单击了模式,从而将其关闭。我只是希望用户在点击保存时被转发到下一页,而不是取消模式。

当我 console.log 数据参数时,我有这个:

{data: Media, role: undefined}
data: Media
id: 23
name: "eeeee"
description: ""
startDate: ""
endDate: ""
episode: 1
slates: []
__proto__: Object
role: undefined
__proto__: Object

当用户点击模态框上的取消按钮时:

{data: undefined, role: undefined}
data: undefined
role: undefined
__proto__: Object

当用户在模态框外点击时:

{data: undefined, role: "backdrop"}
data: undefined
role: "backdrop"
__proto__: Object

我尝试测试数据是否是Media类型,如果是Media实例,则不成功..

      console.log(data instanceof Media); //False
      console.log(typeof data); //object
      console.log(data === undefined); //False
      console.log(data === "undefined"); //False
      console.log(data == undefined); //False
      console.log(data == "undefined"); //False

我错过了什么?如果它是一个对象,我如何测试这个“数据”变量,即使用户点击了模式或取消按钮?

【问题讨论】:

    标签: javascript typescript ionic-framework ionic4


    【解决方案1】:

    需要先关闭模态框,然后才能在应用程序中继续操作。这在文档中有所说明:

    模态框是显示在应用内容顶部的对话框,必须 在交互可以恢复之前被应用关闭。

    ion-modal documentation


    我只希望用户点击后跳转到下一页 保存,不取消模态。

    您可以指定自定义角色来解除 Modal 或指定数据来实现相同的目的。请参阅下面的示例,将save 角色传递到您的页面并触发导航。例如,当您通过在模式页面外部单击来关闭模式时,角色将设置为backdrop

    模态

    this.modalController.dismiss(undefined, 'save');
    

    页面

    newMediaModal.onDidDismiss().then((data: object) => {
      if (data['role'] === 'save') this.navCtrl.navigateForward("slate-list");
    });
    

    【讨论】:

    • 太好了,托马斯。这正是我所需要的。
    • 乐于助人 ;)
    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 2018-10-19
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    相关资源
    最近更新 更多