誰かが 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});
});
例えば:
上記の例では、 に移動すると/users/1
、ユーザー 1 がロードされ、 に設定されます$scope
。
次に、に移動すると/users/2
、ユーザー 2 が読み込まれます。の同じインスタンスがUserEditorCtrl
再利用されているか、それとも新しいインスタンスが作成されているか?
- 新しいインスタンスの場合、最初のインスタンスの破棄をトリガーするのは何ですか?
- 再利用する場合、これはどのように機能しますか? (つまり、データをロードするメソッドは、コントローラーの作成時に実行されるように見えます)