我正在试验$routeParams
,并在AngularJS文档中跟随this example。作为参考,这是脚本本身:
angular.module('ngRouteExample', ['ngRoute'])
.controller('MainController', function($scope, $route, $routeParams, $location) {
$scope.$route = $route;
$scope.$location = $location;
$scope.$routeParams = $routeParams;
})
.controller('BookController', function($scope, $routeParams) {
$scope.name = "BookController";
$scope.params = $routeParams;
})
.controller('ChapterController', function($scope, $routeParams) {
$scope.name = "ChapterController";
$scope.params = $routeParams;
})
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/Book/:bookId', {
templateUrl: 'book.html',
controller: 'BookController',
resolve: {
// I will cause a 1 second delay
delay: function($q, $timeout) {
var delay = $q.defer();
$timeout(delay.resolve, 1000);
return delay.promise;
}
}
})
.when('/Book/:bookId/ch/:chapterId', {
templateUrl: 'chapter.html',
controller: 'ChapterController'
});
// configure html5 to get links working on jsfiddle
$locationProvider.html5Mode(true);
});
我无法理解的是: MainController
如何获取更新的$routeParam
对象?我可以在点击时看到{{1}的项目负责设置正在改变,但我不明白如何。这使得重现这种行为变得有点困难。
答案 0 :(得分:3)
它没有被重新实例化,并且它没有“获取”更新的$routeParams
对象 - 控制器中的对象是 routeParams
对象。它是其他控制器中的相同的对象,而不是它的“副本”。
因此,当$ routeParams对象发生更改时,另一个控制器已经有了更改。