在一个标签中取消订阅 observable 会禁用所有吗?

我已经使用 Riot.js 构建了一个 SPA,该 SPA 将专有消息传递系统接收到的数据可视化。为了使标签对更改做出反应,我riot.ob在riot上下文中创建了一个全局 observable ( ),当从服务器接收到新值时,它会触发一条消息:


riot.ob.trigger('valueUpdate', stationId, datapointId, value);

如果消息是针对此标签的,则有许多不同的标签订阅此事件并触发更新:


riot.ob.on('valueUpdate', function (stationId, datapointId, value) {

    if (stationId == self.stationId && datapointId == self.datapoint.id) {

        self.value = value;

        self.update();

    }

});

这很好用。当我在我的应用程序中导航时会出现问题,这意味着我需要在特定区域卸载标签并安装其他东西。当我卸载像上面这样的标签时,我需要取消订阅valueUpdate事件,所以我使用这个:


this.on('unmount', function () {

    riot.ob.off('valueUpdate');

})

但是现在所有其他仍然安装在其他地方的标签也会自动取消订阅,并且不再监听这个valueUpdate事件。如何仅取消订阅单个标签的事件处理函数?我是否必须创建一个命名函数并将其传递给riot.ob.off('valueUpdate');某种方式?


慕森王
浏览 126回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript