小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如题。
安卓手机自带返回按钮,点击后。返回上一页。但不触发上一页的onShow。
场景: 首页->登陆/绑定手机号
原本设定为:首页监听是否获取token,获取到则为已绑定成功,没获取到则弹出授权绑定弹框。监听在onshow里面实现,但现在进入绑定手机号页面后,点击安卓手机自带返回按钮后,不触发首页的onshow,也就无法监听。用户绕过绑定手机号。。。
求官方解答。谢谢。
ps:可能要躺尸了。
2 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
自带返回按钮的安卓机都会这样。官方是能够触发钩子函数的吗?
event.js
//event.js
var
events = {};
function
on(name, that, callback) {
console.log(
'event->on'
, name)
tuple = [that, callback];
callbacks = events[name];
if
(Array.isArray(callbacks)) {
callbacks.push(tuple);
}
else
{
events[name] = [tuple];
remove(name, that) {
'event->remove'
events[name] = callbacks.filter((tuple) => {
return
tuple[0] != that;
})
emit(name, data) {
'event->emit'
, name, data)
callbacks.map((tuple) => {
that = tuple[0];
callback = tuple[1];
'event '
+ name +
': +1'
)
callback.call(that, data);
exports.on = on;
exports.remove = remove;
exports.emit = emit;
app.js中引入event.js
const event = require('./utils/event.js')
onLaunch:
(e) {
this
.event = event
在首页在onLoad里监听:
getApp().event.on(
'checkToken'
,
(res) {
//根据res逻辑处理
在绑定页面完成操作后提交事件:
getApp().event.emit(
, data)
谢谢,我试试
跨页面异步通信,这样肯定行的,我的项目里一直就是这么用的。
但是从手机返回按钮上过来,同样不会触发onLoad鸭,这怎么监听
这个机制不需要返回的时候监听,需要在事件触发的时候emit直接响应。
比如,你绑定手机号的时候会执行request操作吧,在success回调里判断是否绑定成功,如果成功就emit一次,首页会收到数据的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
自带返回按钮的安卓机都会这样。官方是能够触发钩子函数的吗?
event.js
//event.js
var
events = {};
function
on(name, that, callback) {
console.log(
'event->on'
, name)
var
tuple = [that, callback];
var
callbacks = events[name];
if
(Array.isArray(callbacks)) {
callbacks.push(tuple);
}
else
{
events[name] = [tuple];
}
}
function
remove(name, that) {
console.log(
'event->remove'
, name)
var
callbacks = events[name];
if
(Array.isArray(callbacks)) {
events[name] = callbacks.filter((tuple) => {
return
tuple[0] != that;
})
}
}
function
emit(name, data) {
console.log(
'event->emit'
, name, data)
var
callbacks = events[name];
if
(Array.isArray(callbacks)) {
callbacks.map((tuple) => {
var
that = tuple[0];
var
callback = tuple[1];
console.log(
'event '
+ name +
': +1'
)
callback.call(that, data);
})
}
}
exports.on = on;
exports.remove = remove;
exports.emit = emit;
app.js中引入event.js
const event = require('./utils/event.js')
onLaunch:
function
(e) {
this
.event = event
}
在首页在onLoad里监听:
getApp().event.on(
'checkToken'
,
this
,
function
(res) {
//根据res逻辑处理
})
在绑定页面完成操作后提交事件:
getApp().event.emit(
'checkToken'
, data)
谢谢,我试试
跨页面异步通信,这样肯定行的,我的项目里一直就是这么用的。
但是从手机返回按钮上过来,同样不会触发onLoad鸭,这怎么监听
这个机制不需要返回的时候监听,需要在事件触发的时候emit直接响应。
比如,你绑定手机号的时候会执行request操作吧,在success回调里判断是否绑定成功,如果成功就emit一次,首页会收到数据的。