想实现一个不需要宿主组件的自定义弹窗。
1、CustomDialog实现,现阶段CustomDialog需要CustomDialogController,且CustomDialogController需要再@Component struct传递,每个使用的地方都得定义CustomDialogController。
2、通过子窗口实现,子窗口无法传递回调数据。
3、promptAction.openCustomDialog 需要在每一个使用的Component创建builder。想要的实现是类似PhotoViewPicker的使用不需要依赖宿主,如下:
//选择图片
selectPhoto() {
const photoSelectOptions = new picker.PhotoSelectOptions();
const photoViewPicker = new picker.PhotoViewPicker();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; // 过滤选择媒体文件类型为IMAGE
photoSelectOptions.maxSelectNumber = 1; // 选择媒体文件的最大数目
photoViewPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) => {
this.fileUri = photoSelectResult.photoUris[0]
}).catch((err: BusinessError) => {
console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})
}
请问怎么实现?
可以通过子窗口实现,通过emitter通知。参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-emitter-V5\#emitteron