HarmonyOS 如何在一个class中创建一个自定义弹框

我的接口写在了一个viewmode的class中,然后这个类中有个接口请求,需要根据返回数据弹一个框,提示用户补录数据,这种场景不知如何实现

HarmonyOS
16h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

可以考虑使用promptaction的opencustomdialog。可封装一层opencustomdialog固定的样式,再通过一个方法直接调用封装好的opencustomdialog。

opencustomdialog实现文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5#promptactionopencustomdialog

以下仅供参考:

Index首页:

用法:

Button("测试").onClick(()=>{
  TestA.getIns().openDialog(()=>{
    hilog.info(0x0000,"ccTest","AAAAA")
  },()=>{
    hilog.info(0x0000,"ccTest","BBBBB")
  })
})

class中:

export class TestA{
  private static Ins:TestA;//单例模式去调用
  constructor() {
    TestA.Ins = this;
  }
  customDialogComponentId: number = 0
  public static getIns(){
    if(!TestA.Ins){
      TestA.Ins = new TestA();
    }
    return TestA.Ins;
  }
  openDialog(sureCB: Function, cancelCB: Function) {
    promptAction.openCustomDialog({
      builder: () => {
        dialogStyleS.getIns().dialogStyle(this.customDialogComponentId ,sureCB, cancelCB);
      }
    }).then((dialogId: number) => {
      this.customDialogComponentId = dialogId
    })
  }
}

弹窗的样式:

@Component
export struct dialogStyleS {
  private static Ins: dialogStyleS;

  constructor() {
    super();
    dialogStyleS.Ins = this;
  }
  public static getIns() {
    if (!dialogStyleS.Ins) {
      dialogStyleS.Ins = new dialogStyleS();
    }
    return dialogStyleS.Ins;
  }
  build() {
  }
  @Builder
  dialogStyle(customDialogComponentId:number,sureCB?: Function, cancelCB?: Function) {
    Column() {
      Text('弹窗').fontSize(30)
      Row({ space: 50 }) {
        Button("确认").onClick(() => {
          sureCB && sureCB()
          promptAction.closeCustomDialog(customDialogComponentId)
        })
        Button("取消").onClick(() => {
          cancelCB && cancelCB()
          promptAction.closeCustomDialog(customDialogComponentId)
        })
      }
    }.height(200).padding(5).justifyContent(FlexAlign.SpaceBetween)
  }
}
分享
微博
QQ
微信
回复
14h前
相关问题
如何在自定义函数创建一个UI组件
1838浏览 • 1回复 待解决
如何实现一个自定义询问
442浏览 • 1回复 待解决
如何封装一个自定义Dialog对话
2248浏览 • 1回复 待解决
HarmonyOS 如何在class启动一个线程
33浏览 • 1回复 待解决
使用自定义函数创建一个UI组
383浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
2846浏览 • 1回复 待解决
HarmonyOS 实现一个自定义分类列表
314浏览 • 1回复 待解决
如何快速开发出一个自定义弹窗?
410浏览 • 1回复 待解决
如何创建一个window?
349浏览 • 1回复 待解决
HarmonyOS一个自定义的tabs冲突
32浏览 • 1回复 待解决