Предположим, что я 3 контроллеров, каждый из которых связан с различными <ons-page>
:онсэн слушателей навигатор postpush событий в нескольких угловых контроллеров
C1 (v1.html)
,C2 (v2.html)
,C3 (v3.html)
Я огонь nav.pushPage()
от v1.html
до v2.html
, а затем оттуда до v3.html
. Я пытаюсь инициализировать переменные области для C2
и C3
, используя postpush
прослушиватель событий.
Теперь я смущен, так это размещение nav.on('postpush')
прослушивателей событий. Если я поместил его как в C2
, так и в C3
, то при переходе на v3.html
, оба игрока C2
и C3
увольняются. Пройдя некоторые документы и проблемы, это похоже на ожидаемое поведение. Но стоит ли мне беспокоиться об этом?
Я попытался отключить события с помощью метода nav.off('postpush')
, на $scope.$on('$destroy')
во всех контроллерах, но это, кажется, не работает, так как pushPage()
на v1.html
не разрушит C1's
сферу. Какая работа для этого? Где я должен отключить слушателя?
Сообщите мне, если для этого требуется фрагмент кода, так как все вышеизложенное связано с API onsen, что должно быть вполне понятным.
Если я правильно понял, проблема в том, что вы не можете отличить C2 от «postpush» C1-> C2 и C2-> C3? В этом случае событие 'postpush' имеет свойства« enterPage »и« leavePage », которые могут быть полезны. –
@FranDios Да, я использую эти 2 свойства прямо сейчас. Но предположим, что я привязал контроллеры 'C2' в 2 представлениях. Таким образом, этот контроллер будет создан дважды, таким образом, дважды регистрируя «postpush». Поэтому, когда я нажимаю от 'v2' до' v3', область 'C2' не уничтожается. И затем нажатие от 'v3' до' v4 (C2) 'снова регистрирует область« C2 ». Сейчас у нас есть дубликаты слушателей. Как получить предыдущий? –
@FranDios Я не могу сделать это по размаху, поскольку область страницы «v2» по-прежнему активна. –