【问题标题】:ionic accidentally unsubscribe event when unload with menu使用菜单卸载时,离子意外取消订阅事件
【发布时间】:2018-06-27 10:55:34
【问题描述】:

背景
一个带有菜单和两个页面的离子应用程序(Homelist)。

Home页面订阅ionViewWillEnter上的事件
并在ionViewWillUnload 上取消订阅。

正确情况:
使用 Home 和订阅的事件启动应用程序。
如果切换菜单并从Home 中单击List,则取消订阅该事件。
重新输入Home 并订阅该事件。

错误情况:
应用以 Home 开头并订阅了事件。
切换菜单 > 点击Home >
控制台:
已订阅事件
取消订阅事件

结果是Home 页面上取消订阅的事件。

愿望状况
输入Home(从其他页面/从菜单重新输入)> 订阅事件一次。
离开Home(到其他页面/从菜单重新加载同一页面)取消订阅事件一次。

游乐场
ionic-menu

我希望输入和卸载是成对的。
如果重新进入同一页面,则应在进入之前运行卸载。
但是,事实并非如此。
请建议一种在 ionic
中正确(取消)订阅事件的方法 谢谢。

【问题讨论】:

    标签: angular ionic-framework


    【解决方案1】:
    import { Component, OnInit, OnDestroy } from '@angular/core';
    import { NavController, Events } from 'ionic-angular';
    
    @Component({
      selector: 'page-home',
      templateUrl: 'home.html'
    })
    export class HomePage /*implements OnInit, OnDestroy*/ {
    
      constructor(public navCtrl: NavController,
                  public events: Events) {}
    
    
    
    
      ionViewWillEnter() {
        console.log("ion enter info subscribed");
        this.events.subscribe('get-info');
        this.events.subscribe("value",(data) => {
          console.log("ion enter info subscribed");
        this.events.subscribe('get-info');
        });
      }
    
      ionViewWillUnload() {
        console.log("ion unload info unsubscribed");
         this.events.publish('value',true)
        this.events.unsubscribe('get-info');
    
      }
    

    【讨论】:

    • 如果从Home 切换到List,事件再次订阅,这是不希望的,因为Home 页面不活动。对于编码视图,这是因为发布value导致再次订阅。此外,对于重新进入Home,订阅重复次数与重新进入页面一样多。可以分享一下背后的想法吗?
    猜你喜欢
    • 2014-11-16
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    相关资源
    最近更新 更多