Background
一个带有菜单和两个页面(Home
和list
(的离子应用程序。
Home
页面在ionViewWillEnter
上订阅事件,并在ionViewWillUnload
上取消订阅。
正确情况:
使用Home
和事件订阅启动应用。
如果切换菜单并单击List
从Home
,则事件已取消订阅。
重新输入Home
并订阅事件。
错误情况:
应用程序以Home
启动,事件已订阅。
切换菜单>单击Home
>
控制台:
事件已
订阅事件已取消订阅
结果是页面上Home
取消订阅的事件。
愿望情况
输入Home
(从其他页面/从菜单重新输入(>订阅事件一次。
保留Home
(到其他页面/从菜单重新加载同一页面(取消订阅事件一次。
游乐场
离子菜单
我希望输入和卸载是成对的。
如果重新进入同一页面,则应在进入之前运行卸载。
然而,事实并非如此。
请在离子
谢谢中提出一种正确(取消(订阅事件的方法。
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');
}