Я построил SPA с Riot.js, который визуализирует данные, полученные частной системой обмена сообщениями.Чтобы теги реагировали на изменения, я создал глобальную наблюдаемую (riot.ob
) в контексте riot
, которая выдает сообщение при получении новых значений с сервера:
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');
? 1015 *