1、router 方式
包含头文件:
import router from ‘@ohos.router’
第一个页面向第二个页面传值:
Button('点击跳转')
.onClick(()=>{
router.pushUrl({
url: 'pages/SecondPage',
params:{
sendMsg:'这里是数据'
}
})
})
第二个页面获取数据:
包含头文件:
import router from ‘@ohos.router’
@state message:string = (router.getParams() as Record<string, string>)['sendMsg']
第二个页面返回:
Button('返回')
.onClick(()=>{
router.showAlertBeforeBackPage({message:'你确认要返回吗?'})//这里可以添加一个返回提升弹窗
router.back({ //返回上一个页面
url: 'page/FirstPage'
params:{
backMsg:'返回的数据'
}
})
})
第一个页面获取返回的数据:
@state
message:string = '';
onPageShow(){
//当页面显示的时候
let record = router.getParams() as Record <string, string>
if(record){
this.message = record['backMsg']
}
}
2.emitter 方式
引入emitter
import emitter from '@ohos.events.emitter'
发送:
发送一个多参数的对象
item 为要发送的对象
InnerEvent 发送的事件
EventData 事件携带的数据
let eventData = {
data: item};
let innerEvent = {
eventId: 1,
priority: emitter.EventPriority.HIGH
};
emitter.emit(innerEvent, eventData);
订阅:
定义一个 stringName
@State stringName:string=“测试”
TestInfo:发送方法中item 对应的实体
emitter.once(innerEvent, (eventData) => {
const data=JSON.stringify(eventData.data)//拿到返回obj对象
let json:TestInfo=JSON.parse(data);//转换为实体
this.stringName =json.name//赋值
});