Ai đó có thể vui lòng làm rõ vòng đời của bộ điều khiển AngularJS là gì không?
- Là một bộ điều khiển là một singleton, hoặc được tạo / hủy theo yêu cầu?
- Nếu sau này, cái gì kích hoạt việc tạo / hủy bộ điều khiển?
Hãy xem xét ví dụ dưới đây:
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});
});
ví dụ:
Trong ví dụ trên, khi tôi điều hướng đến /users/1
, người dùng 1 được tải và được đặt thành $scope
.
Sau đó, khi tôi điều hướng đến /users/2
, người dùng 2 được tải. Là cùng một thể hiện của UserEditorCtrl
tái sử dụng, hoặc là một thể hiện mới được tạo ra?
- Nếu đó là một phiên bản mới, điều gì gây ra sự phá hủy của phiên bản đầu tiên?
- Nếu nó được tái sử dụng, làm thế nào nó hoạt động? (tức là, phương thức tải dữ liệu dường như chạy khi tạo bộ điều khiển)