В настоящее время я использую AngularJS в своем проекте, и я не уверен, когда / если мне нужно вручную отвязать слушателей от $ scope (или области, например, в функции связывания директивы).

Из документации, которая не самая ясная, я бы предположил, что вам НЕ нужно отключать какие-либо слушатели в текущей области, но я не уверен, придется ли вам отвязать слушателей, скажем, $ rootScope например.

Приветствуются любые разъяснения относительно жизненного цикла компонентов, таких как директива или контроллер директивы.

Благодарность

5
Dominic Santos 2 Авг 2013 в 13:34

1 ответ

Лучший ответ

Angular сделает это за вас.

Когда область видимости уничтожается (например, когда новое представление загружается с помощью директивы ng-view, область видимости старого представления уничтожается) все его дочерние области уничтожаются, а их наблюдатели $ и слушатели также регистрируются через $ on.

$ rootScope вообще не уничтожается во время жизни вашего приложения, поэтому вам нужно управлять его слушателями вручную, но обычно вы регистрируете там вещи, которые должны быть постоянными.

Когда вы регистрируете слушателей через addEventListener, вам нужно удалить их вручную, так как это не управляется через angular.

6
Tadeusz Wójcik 2 Авг 2013 в 13:48