HarmonyOS 间接使用自定义Dialog,controller属性undefined问题
//Index.ets
import { MyDialog } from './MyDialog'
import { TitleButton } from './TitleButton'
@Entry
@Component
struct MyPage {
  build() {
    Column(){
      TitleButton({
        title:'OpenMyDialog',
        customDialogController: new CustomDialogController({
          builder:MyDialog()
        })
      })
    }
  }
}
//MyDialog.ets
@Component
@CustomDialog
export struct MyDialog {
  controller: CustomDialogController;
  build() {
    Button('Quit')
      .onClick(()=>{
        this.controller?.close()
      })
  }
}
//TitleButton.ets
@Component
export struct TitleButton{
  @Prop title:string;
  customDialogController?: CustomDialogController;
  build() {
    Column(){
      Button(this.title)
        .onClick(()=>{
          this.customDialogController?.open()
        })
    }
  }
}
Demo代码文件上面给出,这个场景是 MyPage => TitleButton => MyDialog,我直接在MyPage中new一个CustomDialogController传给TitleButton,builder使用MyDialog,这个demo下,MyDialog弹窗中的Quit按钮是无法退出弹窗的,调试发现MyDialog中的controller为undefined。
若修改Index.ets和TitleButton.ets如下,则Quit按钮正常退出,程序正常运行,请问为什么上面那种不行。
//修改后Index.ets
import { TitleButton } from './TitleButton'
@Entry
@Component
struct MyPage {
  build() {
    Column(){
      TitleButton({
        title:'OpenMyDialog',
      })
    }
  }
}
//修改后TitleButton.ets
import { MyDialog } from './MyDialog';
@Component
export struct TitleButton{
  @Prop title:string;
  customDialogController?: CustomDialogController;
  build() {
    Column(){
      Button(this.title)
        .onClick(()=>{
          this.customDialogController=new CustomDialogController({
            builder:MyDialog()
          })
          this.customDialogController?.open()
        })
    }
  }
}
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 HarmonyOS  自定义 Dialog this.controller.close() 关闭失败 或 undefined 
934浏览  • 1回复 待解决
HarmonyOS 自定义dialog相关问题 
1088浏览  • 1回复 待解决
HarmonyOS  自定义Dialog显示问题 
1680浏览  • 1回复 待解决
HarmonyOS 自定义Dialog高度问题 
1156浏览  • 1回复 待解决
@CustomDialog 自定义dialog 中的controller: CustomDialogController 是如何赋值的? 
1636浏览  • 1回复 待解决
HarmonyOS 自定义Dialog上有自定义键盘,侧滑问题 
1099浏览  • 1回复 待解决
HarmonyOS 自定义dialog中的某些属性如何调用? 
946浏览  • 0回复 待解决
HarmonyOS 自定义dialog中的某些属性如何调用 
920浏览  • 1回复 待解决
HarmonyOS如何自定义组件的Controller? 
1647浏览  • 1回复 待解决
HarmonyOS 自定义Dialog,autoCancel属性和onWillDismiss会冲突吗 
1029浏览  • 1回复 待解决
HarmonyOS  自定义Dialog宽度 
1149浏览  • 1回复 待解决
HarmonyOS 自定义全局dialog 
1094浏览  • 1回复 待解决
HarmonyOS 自定义全屏dialog 
1285浏览  • 1回复 待解决
HarmonyOS 自定义Dialog背景色透明问题 
2401浏览  • 1回复 待解决
自定义Dialog,怎么给自定义Dialog设置其他背景色 
2075浏览  • 1回复 待解决
如何实现一个自定义的Controller? 自定义的Controller与自定义的组件page如何进行交互? 
3145浏览  • 1回复 待解决
HarmonyOS  如何封装自定义Dialog 
1078浏览  • 1回复 待解决
HarmonyOS 自定义dialog open无效 
1263浏览  • 1回复 待解决
HarmonyOS 用CustomDialog自定义Dialog 
1427浏览  • 1回复 待解决
HarmonyOS 关于自定义dialog使用范围的疑问 
1465浏览  • 1回复 待解决
自定义Dialog跳转新页面返回后,Dialog状态丢失的问题 
1062浏览  • 1回复 待解决
HarmonyOS  自定义UI组件如何自定义属性方法 
2279浏览  • 1回复 待解决
HarmonyOS  Dialog是否可以支持自定义动画 
1241浏览  • 1回复 待解决
HarmonyOS 自定义dialog封装后全局调用 
1082浏览  • 1回复 待解决
HarmonyOS 自定义Dialog情况下 TextPicker选中导致背景模糊属性失效 
1088浏览  • 1回复 待解决





















CustomDialogController仅在作为@CustomDialog和@Component struct的成员变量,且在@Component struct内部定义时赋值才有效,请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5#customdialogcontroller