ionic2 打包的app中,rxjs在首页订阅的信息,如何用alert显示在其他页面?
现在做的项目是这样,在首页订阅用户的登录信息,延时触发向服务器的某个请求。
登录页是个modal页,可以在任何需要验证登录的时候调起。首页home页,也就是第一Tab页面,会在初始化的时候订阅用户信息。判断有了用户登陆成功之后,会调用服务器的一个接口,判断是否是新用户;如果是新用户,服务器返回的数据包含true的判断,就会在首页弹出一个新人红包的alert提示。
// home页 初始化 订阅用户信息,一旦登陆,发送请求给服务器
this.accountInfo$ = this.store.select(Selectors.UserAccount.getAccount)
this.accountInfoSubscription = this.accountInfo$.subscribe(data => {
this.accountInfo = data
if (this.accountInfo && this.accountInfo.id) {
setTimeout(() => {
this.store.dispatch(new Actions.UserAccount.DrawPrizeActivity())
}, 5000) // 推迟发送,避免和首页弹屏同时出现
}
})
// 处理新注册红包的结果
this.drawPrizeResultSubscription = this.store.select(Selectors.UserAccount.getDrawPrizeResult).subscribe(res => {
if (res && res.success) {
const prize = res.prize
const prizeName = prize.name
const moduleType = res.moduleType
const msg = '恭喜您获得:' + prizeName
const buttons: any = [
{
text: '知道了',
handler: () => { }
}
]
if (moduleType === 'ACCOUNT') {
buttons.push({
text: '去个人中心',
cssClass: 'special',
handler: () => {
this.navCtrl.parent.select(4)
}
})
}
const alert = this.alertCtrl.create({
cssClass: 'custom-alert',
subTitle: '<img src="assets/custom-alert/gaoxing.png" alt="">',
message: msg,
buttons: buttons
})
alert.present()
}
})
问题来了,其他页面也有需要用户登录权限,一旦在别的页面比如设置页面调起登录modal页,登陆成功后会留在设置页面。但是首页的订阅以及调用服务器的请求都会执行。而如果是新用户,红包alert会在home页面弹出,不会在当前的设置页面出现。
问题: 是否可以将订阅用户信息和调用服务器接口的处理放在全局来做,在任何页面调起登录页成功后返回之前页面,同时弹出新用户红包alert提示?如果可行,如何做?或者有没有别的方法解决这种操作?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论