gpt4 book ai didi

ionic-framework - Ionic2:取消订阅事件以避免重复条目?

转载 作者:行者123 更新时间:2023-12-03 18:01:12 24 4
gpt4 key购买 nike

我关注了this tutorial其中概述了在 Ionic 2 应用程序中添加监控信标。我让它工作得很好:当 View 加载时,它会初始化并开始监听信标:

home.ts

    ionViewDidLoad() {
this.platform.ready().then(() => {
this.beaconProvider.initialise().then((isInitialised) => {
if (isInitialised) {
this.listenToBeaconEvents();
}
});
});
}

这会调用 listenToBeaconEvents 函数,该函数将所有信标填充到 View 中的列表中:

home.ts

    listenToBeaconEvents() {
this.events.subscribe(‘didRangeBeaconsInRegion’, (data) => {

// update the UI with the beacon list
this.zone.run(() => {

this.beacons = [];

let beaconList = data.beacons;
beaconList.forEach((beacon) => {
let beaconObject = new BeaconModel(beacon);
this.beacons.push(beaconObject);
});

});

});
}

我可以使用从以下函数调用函数的 this.beaconProvider.stopRanging() 停止测距:

beacon-provider.ts

    stopRanging() {
if (this.platform.is('cordova')) {
// stop ranging
this.ibeacon.stopRangingBeaconsInRegion(this.region)
.then(
() => {
console.log('Stopped Ranging');
},
error => {
console.error('Failed to stop monitoring: ', error);
}
);
}
}

我遇到的问题是 - 在原始教程中,信标列表显示在根目录下,没有其他导航。我已将它移动到不同的 View ,如果用户退出并重新进入该 View ,它会重新初始化并加载所有内容,从而导致重复的列表条目。

我已经尝试在 beacon-provider.ts 中创建一个函数以在 View 退出之前调用,但我不知道如何防止订阅/事件重复。

我尝试过 this.delegate.didRangeBeaconsInRegion().unsubscribe() 和其他一些变体,但它们都会导致运行时错误。

最佳答案

在您的情况下,您使用的是 Ionic 的 Events API 有自己的 unsubscribe(topic, handler)功能。

在你的组件中,每当你需要取消订阅时,你应该用相同的主题调用它:

this.events.unsubscribe(‘didRangeBeaconsInRegion’);

这将删除您可能已为 didRangeBeaconsInRegion 注册的所有处理程序

如果你想取消订阅一个特定的功能,你必须注册一个命名的处理程序,你可以发送取消订阅。

this.events.unsubscribe(‘didRangeBeaconsInRegion’,this.mySubscribedHandler);

你的 home.ts 看起来像:

 mySubscribedHandler:any = (data) => {

// update the UI with the beacon list
this.zone.run(() => {

this.beacons = [];

let beaconList = data.beacons;
beaconList.forEach((beacon) => {
let beaconObject = new BeaconModel(beacon);
this.beacons.push(beaconObject);
});

});

}

listenToBeaconEvents() {
this.events.subscribe(‘didRangeBeaconsInRegion’,this.mySubscribedHandler);
}

关于ionic-framework - Ionic2:取消订阅事件以避免重复条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com