Qualcuno può chiarire quale è il ciclo di vita di un controller AngularJS?Qual è il ciclo di vita di un controller AngularJS?
- Un controller è un singleton o creato/distrutto su richiesta?
- Se quest'ultimo, cosa provoca la creazione/distruzione del controller?
consideri il seguente esempio:
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});
});
es:
Nell'esempio precedente, quando naviga verso /users/1
, utente 1 viene caricato e impostato sul $scope
.
Quindi, quando si passa a /users/2
, viene caricato l'utente 2. È stata riutilizzata la stessa istanza di UserEditorCtrl
oppure è stata creata una nuova istanza?
- Se si tratta di una nuova istanza, cosa provoca la distruzione della prima istanza?
- Se è riutilizzato, come funziona? (es., il metodo per caricare i dati sembra funzionare sulla creazione del controller)
Al giorno d'oggi il codice che distrugge l'ambito $ vive in https://github.com/angular/angular.js/blob/65f5e856a161e7c91b9ebde1360242dc704d0510/src/ngRoute/directive/ngView.js#L179. Molto utile, grazie! – w00t
viewContentLoaded funziona solo se si utilizza un timeout perché viene inviato appena prima del caricamento del modello ... i documenti dicono il contrario, ma si riferiscono al modello 'grezzo:" HTML STRING "' quando si tratta di un file modello che viene caricato asincrono come. – user3338098