Alguém pode esclarecer qual é o ciclo de vida de um controlador AngularJS?
- Um controlador é um singleton ou criado / destruído sob demanda?
- Neste último caso, o que desencadeia a criação / destruição do controlador?
Considere o exemplo abaixo:
var demoApp = angular.module('demo')
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/home', {templateUrl: '/home.html', controller: 'HomeCtrl'})
.when('/users',{templateUrl: '/users.html', controller: 'UsersCtrl'})
.when('/users/:userId', {templateUrl: '/userEditor.html', controller: 'UserEditorCtrl'});
});
demoApp.controller('UserEditorCtrl', function($scope, $routeParams, UserResource) {
$scope.user = UserResource.get({id: $routeParams.userId});
});
por exemplo:
No exemplo acima, quando eu navego para /users/1
, o usuário 1 é carregado e definido como $scope
.
Então, quando eu navego para /users/2
, o usuário 2 é carregado. A mesma instância é UserEditorCtrl
reutilizada ou uma nova instância é criada?
- Se é uma nova instância, o que desencadeia a destruição da primeira instância?
- Se for reutilizado, como isso funciona? (ou seja, o método para carregar os dados parece ser executado na criação do controlador)
fonte
template: "HTML STRING"
quando é um arquivo de modelo carregado de forma assíncrona.