小程序
小游戏
企业微信
微信支付
扫描小程序码分享
小程序的组件如何获取自身所在页面的示例?
目的是想把组件的生命周期与page的生命周期关联起来。
虽然 2.2.3 暴露了一部分 lifetimes 但是不够,并且有兼容的问题,时候有其他的优雅的方法?
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
组件实例上有getPageId方法获取所在页面的id,页面实例也有getPageId方法获取当前页面的id。可以使用getCurrentPages方法获取页面栈后,然后遍历页面栈获取pageId,进行pageId匹配。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
使用getCurrentPages方法可以不?虽然不优雅
这种方法肯定不行,它获取的永远是页面栈里面最后一个页面也就是当前打开的页面,跟组件所在的页面没有什么关联。从目前开放的api来看,无法直接获取组件所在的页面对象。 一个较简单的做法是在一个自定义page里面重写页面的生命周期函数,为页面设置pageShown,pageHidden等属性,然后在相应的组件里面定义property并做监听。如果觉得性能不好,那就只在用到的页面和事件中添加。 也可以通过自定义事件来完成两者之间的传值,不过要需要一个唯一标志来区分不同的页面。
希望小程序日后尽快尽多地开放更多实用功能吧。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
组件实例上有getPageId方法获取所在页面的id,页面实例也有getPageId方法获取当前页面的id。可以使用getCurrentPages方法获取页面栈后,然后遍历页面栈获取pageId,进行pageId匹配。
使用getCurrentPages方法可以不?虽然不优雅
这种方法肯定不行,它获取的永远是页面栈里面最后一个页面也就是当前打开的页面,跟组件所在的页面没有什么关联。从目前开放的api来看,无法直接获取组件所在的页面对象。 一个较简单的做法是在一个自定义page里面重写页面的生命周期函数,为页面设置pageShown,pageHidden等属性,然后在相应的组件里面定义property并做监听。如果觉得性能不好,那就只在用到的页面和事件中添加。 也可以通过自定义事件来完成两者之间的传值,不过要需要一个唯一标志来区分不同的页面。
希望小程序日后尽快尽多地开放更多实用功能吧。