背景
带有菜单和两个页面(Home
和list
)的离子应用程序。
Home
页在ionViewWillEnter
上订阅了一个活动
并在ionViewWillUnload
上取消订阅。
正确的情况:
以Home
启动应用,并预订活动。
如果切换菜单,然后从List
中单击Home
,则该事件被取消订阅。
重新输入Home
,事件已订阅。
错误的情况:
应用以Home
开头,并已订阅事件。
切换菜单>单击Home
>
控制台:
活动已订阅
取消订阅事件
结果是Home
页上未订阅的事件。
需求情况
输入Home
(从其他页面输入/从菜单重新输入)>订阅事件一次。
使Home
(到其他页面/从菜单重新加载同一页面)取消订阅事件一次。
游乐场
ionic-menu
我希望输入和卸载都带有一对。
如果重新进入同一页面,则应该在进入之前执行卸载。
但是事实并非如此。
请提出一种在离子中正确(取消)订阅事件的方法
谢谢。
答案 0 :(得分:0)
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');
}