203

誰かが 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再利用されているか、それとも新しいインスタンスが作成されているか?

  • 新しいインスタンスの場合、最初のインスタンスの破棄をトリガーするのは何ですか?
  • 再利用する場合、これはどのように機能しますか? (つまり、データをロードするメソッドは、コントローラーの作成時に実行されるように見えます)
4

1 に答える 1