Допустим, я перебираю массив, чтобы элементы выглядели примерно так:
var containerEl = document.createElement('div');
var list = [1, 2, 3, 4, 5];
list.map((data) => {
var divEl = document.createElement('div');
divEl.innerText = data;
// Make observer for click
divEl.onclick$ = fromEvent(divEl, 'click');
containerEl.appendChild(divEl);
});
Это должно привести к чему-то вроде этого:
<div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
Важно то, что ядобавил onclick $, который можно наблюдать:
divEl.onclick$ = fromEvent(divEl, 'click');
Теперь я могу подписаться на клик что-то вроде этого:
divEl.onclick$.subscribe(...);
Однако что, если я перерисовываю все элементы div, созданные во время зацикливания спискамассив?
Чтобы отменить наблюдение, я должен был вызвать отписку, которая включается в возвращаемое значение подписки:
const a$ = divEl.onClick$.subscribe(...);
...
a$.unsubscribe();
Это довольно неудобно, особенно с точки зрения модульной / библиотечной разработки.
Есть ли способ отписать всех наблюдателей от divEl.onclick $ в этом случае?
Любой совет будет очень признателен.