¿Alguien puede aclarar cuál es el ciclo de vida de un controlador AngularJS?
- ¿Es un controlador un singleton, o creado / destruido a pedido?
- Si es esto último, ¿qué desencadena la creación / destrucción del controlador?
Considere el siguiente ejemplo:
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});
});
p.ej:
En el ejemplo anterior, cuando navego /users/1
, el usuario 1 se carga y se establece en $scope
.
Luego, cuando navego /users/2
, se carga el usuario 2. ¿Se UserEditorCtrl
reutiliza la misma instancia o se crea una nueva instancia?
- Si se trata de una nueva instancia, ¿qué desencadena la destrucción de la primera instancia?
- Si se reutiliza, ¿cómo funciona esto? (es decir, el método para cargar los datos parece ejecutarse en la creación del controlador)
fuente
template: "HTML STRING"
cuando se trata de un archivo de plantilla que se carga de forma asíncrona.