位置: IT常识 - 正文

[uniapp] 跨页面传值 uni.$emit 和 uni.$on 的使用方法 以及遇到的坑(uniapp跨域解决方案)

编辑:rootadmin

推荐整理分享[uniapp] 跨页面传值 uni.$emit 和 uni.$on 的使用方法 以及遇到的坑(uniapp跨域解决方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp跨平台,uniapp 页面之间传递数据,uniapp跨端,uniapp跨端,uniapp页面间传值,uniapp跨端,uniapp页面间传值,uniapp 跨页面传值,内容如对您有帮助,希望把文章链接给更多的朋友!

uni.$emit 和 uni.$on 是uniapp自带的跨页面传值   

vue 父子通讯可以用 props  this.$emit   这种简单的父子通讯紧适用于 页面和组件 或者 组件之间的传值,他并不适用于页面和页面的互相传值

那要实现页面通讯呢,我们一起来看看uni.$emit 和 uni.$on的使用方法

示例:

        A页面在 onload 中使用   uni.$on('自定义名称',function(data){}   接收   data为接收到的值

        B页面在事件中  使用    uni.$emit('自定义名称',{属性名称 : 属性值}) 并搭配使用 uni.navigateBack 跳回A页面     A页面的自定义名称要和B页面的自定义名称相同

代码:

        A    页面

// A 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 B 页面传过来的值 )} },}

        B   页面

// B 页面export default { data(){ return{ listData:[1,2,3,4,5] }; }, methods:{ jump(){ uni.$emit('add',{listData:this.listData}) uni.navigateBack({ delta: 1 }); }, },}

这样就实现的页面和页面之间的通讯    

[uniapp] 跨页面传值 uni.$emit 和 uni.$on 的使用方法 以及遇到的坑(uniapp跨域解决方案)

但是  但是  但是 (重点!!!敲黑板)

 uni.$emit 和 uni.$on 都属于全局跨页面传参

所以在A页面  在 onUnload 周期 添加移除监听事件

  uni.$off('自定义名称');

// A 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 B 页面传过来的值 )} }, onUnload() { // 移除监听事件 uni.$off('add'); },}

以上就解决了uniapp 跨页面传参

下面和大家分享一下  博主在使用uni.$emit 和 uni.$on 遇到的大坑

A页面 和 B 页面同时都 调用了 C页面 并且使用了uni.$on 并且名字是一样的

C页面 返回是方法  使用了  uni.$on 同时也使用了 uni.navigateBack 

A页面代码   

// A 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 C 页面传过来的值 )} }, onUnload() { // 移除监听事件 uni.$off('add'); }, methods:{ // A 页面 跳转B页面 jumpB(){ uni.navigateTo({ url:'B' }) }, // A 页面 跳转C页面 jumpC(){ uni.navigateTo({ url:'C' }) }, },}

B页面代码

// B 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 C 页面传过来的值 )} }, onUnload() { // 移除监听事件 uni.$off('add'); }, methods:{ // B 页面 跳转C页面 jumpC(){ uni.navigateTo({ url:'C' }) }, },}

C 页面

// C 页面export default { data(){ return{ listData:[1,2,3,4,5] }; }, methods:{ jump(){ uni.$emit('add',{listData:this.listData}) uni.navigateBack({ delta: 1 }); }, },}

  当A页面跳B页面   B页面跳到C页面          在A页面跳转到B页面然后B页面跳转到C页面  C页面修改完数据之后 AB页面的值都发生了改变

解决方法:AB页面的名称都一样   所以数据渲染混乱   这个时候把名字改成对应的就好了,

创作不易   如果对您有帮助 请留下赞再走吧

本文链接地址:https://www.jiuchutong.com/zhishi/297282.html 转载请保留说明!

上一篇:Cursor!!!GPT-4帮我写代码

下一篇:谷歌浏览器被hao123网页(或其他网页)劫持了,怎么办?(已解决)(谷歌浏览器被hao123锁定改不了)

  • 增值税纳税申报时间
  • 现金流量表的编制基础是什么
  • 什么情况下可以要求员工待岗
  • 餐饮个体工商户交税标准
  • 公司收到虚开发票谁承担
  • 建安业一般纳税人是清包工是什么意思
  • 已认证发票退回的会计分录
  • 打印机需要计提折旧吗
  • 增值税开票金额在哪里看
  • 固定资产预计净残值最后怎么处理
  • 给客户退差价怎么说
  • 销售结算款扣款怎么记账?
  • 销售单价的变动,将促使保本点( )
  • 销售产品的成本属于什么科目
  • 税控盘登不上怎么回事
  • 差旅费进项可以跨月抵扣吗
  • 税务机构
  • 长期债权投资业务处理
  • win10如何设置一键还原系统
  • 线上生活服务app有哪些
  • 银行贷款核销后还产生利息吗
  • linux去除文本中的特殊符号
  • w10如何删除微软拼音
  • 金钱树的养殖方法 盆栽
  • 购买二手商住房没有给契税发票和购房发票
  • 小型微利企业减免所得税计算公式
  • 滴滴发票开公司名称可以抵扣进项吗
  • spring boot整合hibernate
  • css deep深度选择器
  • tensorflow卷积神经网络
  • php跨域提交表单
  • 销售费用的主要类型有哪些
  • 农产品免税收入怎么做账
  • 往来款项的含义
  • 企业所得税申报表在哪里打印
  • 查账征收利润50万交多少税
  • 公益性捐赠递延注会
  • 网上变更财务负责人
  • 运杂费可以计入固定资产吗
  • 织梦相关文章调用
  • 公司帮员工全额买社保该怎么入账?
  • 长期股权投资成本法会计处理
  • 离职员工个税申诉企业怎么处理
  • 委托加工应税消费品是指委托方提供原料和主要材料
  • 计提坏账准备的方法
  • 无形资产的摊销计入什么科目
  • 发票先认证后入账怎么做账
  • 增值税一般纳税人资格登记表
  • 该商品不可进行有物流发货
  • 确认借款无法收款怎么办
  • 小规模纳税人减按1%账务处理
  • 承兑汇票贴现计算器下载
  • 宣传费怎么做账
  • 付给第三方的差额是什么
  • 退货属于什么物流
  • 房地产预售款预交税金计算
  • 定额发票收入怎么样确定
  • 应收账款是否算负债
  • 房屋租赁账务如何做分录
  • 五险 会计
  • 检查sql脚本语法
  • 不同数据库之间的数据一同传递
  • 如何设置电脑从d盘启动
  • linux ./ 命令
  • 快速查看浏览的英语短语
  • macbook 苹果系统
  • u深度如何装win7系统
  • javascript按位与
  • include eigen
  • python内置函数用来返回列表,元组,字典
  • node js打包exe
  • axios使用jsonp
  • 用js设置颜色
  • 如何使用jquery设置一个属性值
  • android中toast用法
  • 领导班子和领导干部年度考核
  • 什么叫关联单位
  • 微信密码忘记了,手机号也没有用了,怎么办
  • 广东地税服务电话
  • 广西地方税务局2017年公务员拟录用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设