Kann jemand bitte klären, wie der Lebenszyklus eines AngularJS-Controllers ist?
- Ist ein Controller ein Singleton oder wird er bei Bedarf erstellt / zerstört?
- Wenn letzteres der Fall ist, was löst die Erstellung / Zerstörung des Controllers aus?
Betrachten Sie das folgende Beispiel:
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});
});
z.B:
Wenn ich im obigen Beispiel zu navigiere, /users/1
wird Benutzer 1 geladen und auf gesetzt $scope
.
Wenn ich dann zu navigiere, /users/2
wird Benutzer 2 geladen. Wird dieselbe Instanz UserEditorCtrl
wiederverwendet oder wird eine neue Instanz erstellt?
- Wenn es sich um eine neue Instanz handelt, was löst die Zerstörung der ersten Instanz aus?
- Wie funktioniert das, wenn es wiederverwendet wird? (dh die Methode zum Laden der Daten scheint beim Erstellen des Controllers ausgeführt zu werden)
quelle
template: "HTML STRING"
wenn es sich um eine Vorlagendatei handelt, die asynchron geladen wird.