weex跨页面通信
需求:
A页面有表单和表格,点击表格中的按钮到B页面,B页面操作完毕,再次回到A页面,表单元素保持不变,表格内容刷新。
通过管道通信去做,用两个管道嵌套,A页面跳转到B页面的时候,直接用管道发过去,B页面收不到信息,需要B页面先告诉A页面可以传值了,A页面再传值。B页面再接收A页面传过来的值,操作页面完成后,再将数据通过另一个管道传回去。
A页面:
const fatherOK = new BroadcastChannel('fatherOK') const fatherFormData = new BroadcastChannel('fatherFormData') mounted() { this.$next(() => { fatherOK.onmessage = (e) => { if (e.data.message == 'OK') { fatherFormData.postMessage({ fatherData: this.infoForm }) } }, fatherFormData.onmessage = (e) => { if (e.data.fatherData) { let fatherInfoForm = e.data.fatherData if (fatherInfoForm) { Object.assign(this.infoForm, fatherInfoForm) this.handleSearch(); } } } } }
B页面:
const fatherOK = new BroadcastChannel('fatherOK') const fatherFormData = new BroadcastChannel('fatherFormData') mounted() { this.$next(() => { fatherFormData.onmessage = (e) => { this.fatherData = e.data.fatherData; }, fatherOK.postMessage({message:"OK"}); } }
给A页面的传值:
fatherFormData.postMessage({fatherData: this.fatherData})