HarmonyOS 鸿蒙Next emitter发射携带数据类型有限制吗?
HarmonyOS 鸿蒙Next emitter发射携带数据类型有限制吗?
emitter发射数据,on监听时获取的EventData.data一直是undified,修改为发射字符串可以正常监听 发射的数据类型如下
export class DialogModel {
titleContent: string | Resource | undefined = undefined
messageContent: string | Resource | undefined = undefined
positiveButtonText: string | Resource | undefined = undefined
negativeButtonText: string | Resource | undefined = undefined
positiveClickCallback: () => void = this.onClick
negativeClickCallback: () => void = this.onClick
onClick() {}
}
更多关于HarmonyOS 鸿蒙Next emitter发射携带数据类型有限制吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
positiveClickCallback: () => void = () => { }
negativeClickCallback: () => void = () => { }
您代码里面这俩闭包的属性导致传值失败。建议您用属性驱动方法,而不是传方法。
将业务封到组件内统一管理。
import { emitter } from '@kit.BasicServicesKit'
@Component
export default struct DemoPage {
build() {
Stack({ alignContent: Alignment.Top }) {
Column().width("100%").height(200).backgroundColor('#7A6CF7')
DialogContainer()
}.backgroundColor("#F5F5F5")
}
aboutToAppear(): void {
setTimeout(() => {
let model2 = new DialogModel()
model2.titleContent = "标题"
model2.messageContent = "文案2"
model2.positiveButtonText = "确定"
// model2.positiveClickCallback = () => {
// console.debug("弹窗关闭")
// }
model2.negativeButtonText = "取消"
showDialog(model2)
let model3 = new DialogModel()
model3.titleContent = "标题"
model3.messageContent = "文案3"
model3.positiveButtonText = "确定"
// model3.positiveClickCallback = () => {
// console.debug("弹窗关闭")
// }
model3.negativeButtonText = "取消"
showDialog(model3)
}, 300)
}
}
export class DialogModel {
titleContent: string | Resource | undefined = undefined
messageContent: string | Resource | undefined = undefined
positiveButtonText: string | Resource | undefined = undefined
negativeButtonText: string | Resource | undefined = undefined
positiveClickEnable: boolean = false
negativeClickEnable: boolean = false
}
@Component
struct DialogContainer {
build() {
}
aboutToAppear(): void {
let innerEvent: emitter.InnerEvent = {
eventId: 100
}
emitter.on(innerEvent, (event: emitter.EventData) => {
let data = event.data as DialogModel
if (data.positiveClickEnable) {
//根据传入的属性做业务,将业务封到组建内
console.log('positiveClickEnable')
}
if (data.negativeClickEnable) {
//根据传入的属性做业务,将业务封到组建内
console.log('negativeClickEnable')
}
})
}
}
function showDialog(dialog: DialogModel) {
let innerEvent: emitter.InnerEvent = {
eventId: 100
}
emitter.emit(innerEvent, {
data: {
"dialog": dialog
}
})
}
更多关于HarmonyOS 鸿蒙Next emitter发射携带数据类型有限制吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
我也是按照你的做法实现,事件也触发了,但数据为什么没传递过来,我是在模拟器中运行,
在HarmonyOS(鸿蒙)系统中,关于Next emitter发射携带数据类型是否有限制的问题,答案主要取决于鸿蒙系统内部对消息传递和数据序列化的机制设计。
鸿蒙系统作为一个先进的操作系统,其消息传递机制通常支持多种数据类型,包括但不限于基本数据类型(如整数、浮点数)、字符串、结构体以及复杂对象等。然而,具体能够携带的数据类型及其大小限制,可能受到系统实现、内存管理、序列化协议以及安全策略等多种因素的影响。
在大多数情况下,鸿蒙系统会提供一套标准的序列化机制,用于将复杂对象转换为可传输的格式。这种机制通常会限制数据的大小,以确保系统的稳定性和性能。此外,不同的应用或服务之间可能还有特定的数据格式和协议要求。
因此,在HarmonyOS中,Next emitter发射携带的数据类型确实可能存在一定的限制。开发者需要参考鸿蒙系统的官方文档或API指南,以了解具体的限制和要求。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,