HarmonyOS 如何在一个class里面promptAction.openCustomDialog 一个自定义弹窗,并动态刷新弹窗里的数据
如何在一个class里面promptAction.openCustomDialog 一个自定义弹窗,并动态刷新弹窗里的数据
比如弹窗的标题是一个倒计时的时间,每秒变化等
import { LifecycleBridgeHandler, ResponseModel } from "@sinochemit/web_bridge";
import promptAction from '@ohos.promptAction'
interface Param {
  open: string | boolean;
  duration: number | string;
  style:number | string
}
export struct  PopViewManager{
  @Builder customDialogComponent(customDialogComponentId:number) {
    Column() {
      Text('弹窗').fontSize(30)
      Row({ space: 50 }) {
        Button("确认").onClick(() => {
          promptAction.closeCustomDialog(globalThis.customDialogComponentId)
        })
        Button("取消").onClick(() => {
          promptAction.closeCustomDialog(globalThis.customDialogComponentId)
        })
      }
    }.height(200).padding(5).justifyContent(FlexAlign.SpaceBetween)
  }
  build() {
  }
}
export class OpenRecordVoiceBridgeHandler extends LifecycleBridgeHandler {
  static readonly HANDLER_NAME = "openRecordVoice";
  public customDialogComponentId: number = 0
  jsCallNative(data: string, callback: Function): void {
    const param: Param = JSON.parse(data);
    if (!param) {
      callback(ResponseModel.fail("参数错误"));
      return;
    }
    let duration = 60;
    let style = 0;
    let play = param.open
    duration = Number(param.duration)
    style = Number(param.style)
    if (play === "false" || play === false){
    }
    promptAction.openCustomDialog({
      builder: () => {
        new PopViewManager().customDialogComponent(this.customDialogComponentId)
      },
      onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
        console.info("reason" + JSON.stringify(dismissDialogAction.reason))
        console.log("dialog onWillDismiss")
        if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
          dismissDialogAction.dismiss()
        }
        if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
          dismissDialogAction.dismiss()
        }
      }
    }).then((dialogId: number) => {
      globalThis.customDialogComponentId = dialogId
      this.customDialogComponentId = dialogId
    })
  }
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 promptAction.openCustomDialog 自定义弹窗 
1192浏览  • 1回复 待解决
HarmonyOS 怎么使用promptAction.openCustomDialog在全局自定义一个组件 
945浏览  • 1回复 待解决
HarmonyOS 如何在 promptAction.openCustomDialog 自定义弹窗中实现动画? 
1131浏览  • 1回复 待解决
如何在全局实现一个自定义dialog弹窗 
4109浏览  • 1回复 待解决
HarmonyOS  如何封装一个类似promptAction.showDialog()一样的自定义弹窗? 
1811浏览  • 1回复 待解决
HarmonyOS 如何自定义写一个从上方/底部弹出的一个弹窗 
1289浏览  • 1回复 待解决
HarmonyOS 如何在一个class中创建一个自定义弹框 
1294浏览  • 1回复 待解决
如何快速开发出一个自定义弹窗? 
1465浏览  • 1回复 待解决
HarmonyOS 如何通过一个全局builder弹出一个自定义全局弹窗 
1587浏览  • 1回复 待解决
实现promptAction.openCustomDialog接口,全局调用自定义弹窗打开 
3314浏览  • 1回复 待解决
HarmonyOS  promptAction.openCustomDialog弹窗一直存在 
1570浏览  • 1回复 待解决
HarmonyOS promptAction.openCustomDialog是否可以加一个autoCancel的属性? 
1173浏览  • 1回复 待解决
promptAction.openCustomDialog 全局弹窗 
1773浏览  • 1回复 待解决
HarmonyOS  使用promptAction.openCustomDialog创建自定义弹窗builder怎么传参 
1661浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkUI中创建一个自定义弹窗? 
1209浏览  • 1回复 待解决
在ArkUI中,如何实现一个自定义弹窗组件? 
669浏览  • 1回复 待解决
HarmonyOS如何封装一个全局使用的bindPopup自定义弹窗? 
1776浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何创建一个自定义弹窗(CustomDialog)? 
1740浏览  • 1回复 待解决
HarmonyOS promptAction.openCustomDialog自定义弹窗在非UI类中调用问题 
1187浏览  • 1回复 待解决
HarmonyOS 弹出一个自定义弹窗,里面包含一个多行输入框,怎么让弹窗弹出的时候,输入框自动获取焦点? 
1442浏览  • 1回复 待解决
HarmonyOS 全局自定义弹窗promptAction.openCustomDialog必须在page中是使用吗? 
1160浏览  • 1回复 待解决
在一个模块a自定义了一个class A,在另一个模块定义class B,如何a模块使用A的时候用B替换 
1565浏览  • 2回复 待解决
HarmonyOS  promptAction.openCustomDialog 自定义宽度&圆角 
1608浏览  • 1回复 待解决
HarmonyOS  promptAction在显示自定义弹窗的时候,底部会有一个固定宽度的白色底 
1078浏览  • 1回复 待解决
如何在一个非@Entry的类中创建一个CustomDialogController弹窗 
1718浏览  • 1回复 待解决





















动态刷新的弹窗只有这个uicontext的opencustomdialog支持
参考链接:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-UIContext.md#opencustomdialog12
参考代码如下