void //回调方法confirm。cancel: () => void //回调方法cancel。this.confirm() //调用回调。this.cancel() //调用回调。//定义onCancel回调方法。Text('登录页') {_arkts typeerror: is not c">
赞
踩
主题:这篇博客主要讲的是:
1.鸿蒙ArkTS语言自定义弹框的使用。
2.由于使用不当造成回调的时候,出现错误。(page: pages/LoginPage.jsError message: is not callableSource)
3.回调传参有问题,也可以这样解决。
好了,直接上代码:
/** * created by zan on 2024/1/25 */ @Preview @CustomDialog export struct CustomDialogExample { controller: CustomDialogController //弹出框控制器 cancel: () => void //回调方法cancel confirm: () => void //回调方法confirm build() { Column() { Text("是否退出?").fontSize(30).margin({ top: 60 }) Blank() Row() { Text('是') .width('50%') .height(40) .backgroundColor(Color.Blue) .fontColor(Color.White) .fontSize(18) .textAlign(TextAlign.Center) .onClick(() => { this.controller.close() this.confirm() //调用回调 }) Text('否') .width('50%') .height(40) .backgroundColor(Color.Gray) .fontColor(Color.White) .fontSize(18) .textAlign(TextAlign.Center) .onClick(() => { this.controller.close() this.cancel() //调用回调 }) }.backgroundColor(Color.Red) }.width('100%').height(200) } }
import { CustomDialogExample } from '../view/CustomDialogExample' /** * created by zan on 2024/1/25 */ @Entry @Component struct LoginPage { public dialog = new CustomDialogController({ builder: CustomDialogExample({ cancel: this.onCancel, // confirm: this.onAccept confirm: this.onAccept.bind(this) }) }) //定义onCancel回调方法 onCancel() { console.info('Callback when the first button is clicked') } //onAccept onAccept() { console.info('Callback when the second button is clicked') this.initJG(); } public initJG() { console.info('11111111111 button is clicked') } aboutToAppear() { this.dialog.open(); } build() { Text('登录页') { } } }
出现错误原因:因为你没有按照下图中第二种方式绑定this。
我觉得是this指向的问题。如果你绑定this,它才指向LoginPage。
都看到这里了,给个支持吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。