有人能解释一下AngularJS控制器的生命周期是什么吗?
控制器是单例的,还是按需创建/销毁的? 如果是后者,是什么触发控制器的创建/销毁?
考虑下面的例子:
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});
});
eg:
在上面的例子中,当我导航到/users/1时,用户1被加载,并设置为$范围。
然后,当我导航到/users/2时,用户2被加载。是重用UserEditorCtrl的同一个实例,还是创建了一个新实例?
如果是一个新实例,是什么触发了第一个实例的销毁? 如果它被重用,它是如何工作的?(即。,加载数据的方法似乎在控制器创建时运行)