Ответ 1
Ну, на самом деле вопрос в том, каков жизненный цикл для контроллера ngView
.
Контроллеры не являются одиночными. Любой может создать новый контроллер, и он никогда не будет автоматически уничтожен. Дело в том, что оно, как правило, связано с жизненным циклом его основной сферы. Контроллер не будет автоматически уничтожаться при его уничтожении. Однако, после уничтожения основной области, его контроллер бесполезен (по крайней мере, по дизайну, он должен быть).
Отвечая на ваш конкретный вопрос, директива ngView
(также для директивы ngController
) всегда будет создать новый контроллер и новую область каждый раз, когда происходит навигация. И последняя область также будет уничтожена.
"События" жизненного цикла довольно просты. Событие творения " - это конструкция самого контроллера. Просто запустите свой код. Чтобы узнать, когда он становится бесполезным (" событие уничтожения"), откройте область $destroy
event:
$scope.$on('$destroy', function iVeBeenDismissed() {
// say goodbye to your controller here
// release resources, cancel request...
})
Для ngView
в частности, вы можете узнать, когда контент загружается через событие области $viewContentLoaded
:
$scope.$on('$viewContentLoaded', function readyToTrick() {
// say hello to your new content here
// BUT NEVER TOUCHES THE DOM FROM A CONTROLLER
});
Вот Plunker с концептуальным доказательством (откройте окно консоли).