Quelqu'un peut-il clarifier le cycle de vie d'un contrôleur AngularJS?
- Un contrôleur est-il un singleton, ou créé / détruit à la demande?
- Dans ce dernier cas, qu'est-ce qui déclenche la création / destruction du contrôleur?
Prenons l'exemple ci-dessous:
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});
});
par exemple:
Dans l'exemple ci-dessus, lorsque je navigue vers /users/1
, l'utilisateur 1 est chargé et défini sur $scope
.
Ensuite, lorsque je navigue vers /users/2
, l'utilisateur 2 est chargé. La même instance est-elle UserEditorCtrl
réutilisée ou une nouvelle instance est-elle créée?
- S'il s'agit d'une nouvelle instance, qu'est-ce qui déclenche la destruction de la première instance?
- S'il est réutilisé, comment ça marche? (c'est-à-dire que la méthode de chargement des données semble s'exécuter lors de la création du contrôleur)
la source
template: "HTML STRING"
lorsqu'il s'agit d'un fichier de modèle, il est chargé en mode asynchrone.