我已经使用 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');某种方式?
相关分类