Я пытаюсь сделать всплывающее меню с помощью RxJS, вот где я остановился: http://jsbin.com/coqulamamo/1/edit?html,js,outputКак правильно применять distinctUntilChanged для минимизации операций DOM
Я сопоставляется с 2-х основных eventstreams, menuActivation
и menuDeactivation
:
menuActivation
испускает всплывающий контейнер, когда любой из его детей испускаетmouseenter
илиfocusin
.menuDeactivation
испускает последний элементmenuActivation
после его первогоmouseleave
или в следующий раз, когда любой элемент, не относящийся к потомству, испускаетfocusin
.
Для каждого всплывающего контейнера по menuActivation
, active
класс прилагается; Для каждого из menuDeactivation
, класс active
удаляется из элемента.
До сих пор так хорошо. Но теперь, как я могу предотвратить слишком много операций DOM? Нет необходимости активировать меню, когда оно уже активно, то же самое относится к деактивации, но я не хочу сохранять состояния в Rx.Subject, может быть любая длина всплывающих меню, распространяемых на странице.
Я попытался .distinctUntilChanged()
но когда всплывающее окно контейнера излучается последовательно в menuActivation
, а затем в menuDeactivation
, в следующий раз, то же всплывающее окно не будет выделяться на menuActivation
.
Есть ли способ разрешить всплывающему контейнеру превзойти menuActivation.distinctUntilChanged()
после проекта на menuDeactivation
?
Пожалуйста, добавьте код к вопросу, а не ссылку на него. Вы даже можете использовать SO-фрагмент для отправки функционального кода. – Brandon