EventListener в каждом контроллере - PullRequest
1 голос
/ 16 июня 2019

У меня приложение Angular использует Angular 1.7 и ui-router. В моем index.html у меня есть document.addEventListener('keyup',onKeyupVT) - событие никогда не нужно удалять. В каждом контроллере у меня также есть событие onkeyup (document.addEventListener('keyup',onKeyup)). У меня есть кнопка в index.html (не в контроллере). Если кнопка переключится, я добавлю или уберу событие onkeyup в контроллере (не в index.html).

Я пытаюсь $rootScope.on('Event' + n, function(e,data){ //... }) на каждом контроллере и звоню $rootScope.emit('Event' + n,data). Это работает, но мне нужно написать это на каждом контроллере. И что же мне делать. Спасибо за вашу помощь

1 Ответ

0 голосов
/ 16 июня 2019

Если контроллер добавляет прослушиватель событий для всего документа, он должен удалить прослушиватель при разрушении контроллера.

app.controller("ctrl", function($document) {
    $document.on("keyup",onKeyup);
    function onKeyup(ev) {
        console.log(ev);
    }

    //REMOVE event listeners
    this.$onDestroy = function () {
        $document.off("keyup",onKeyup);
    };
})

Это необходимо для предотвращения утечек памяти и других непреднамеренных действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...