Czy ktoś może wyjaśnić, jaki jest cykl życia kontrolera AngularJS?
- Czy kontroler jest singletonem, czy też jest tworzony / niszczony na żądanie?
- Jeśli to drugie, co powoduje utworzenie / zniszczenie kontrolera?
Rozważ poniższy przykład:
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});
});
na przykład:
W powyższym przykładzie, kiedy nawiguję do /users/1
, użytkownik 1 jest ładowany i ustawiany na $scope
.
Następnie, gdy nawiguję do /users/2
, użytkownik 2 jest ładowany. Czy to samo wystąpienie zostało UserEditorCtrl
ponownie użyte, czy też zostało utworzone nowe wystąpienie?
- Jeśli jest to nowa instancja, co powoduje zniszczenie pierwszej instancji?
- Jeśli zostanie ponownie wykorzystany, jak to działa? (tzn. metoda ładowania danych wydaje się działać podczas tworzenia kontrolera)
źródło
template: "HTML STRING"
gdy jest to plik szablonu, który jest ładowany asynchronicznie.