1
我正在試驗$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
對象?我可以看到,當我點擊時,MainController
負責設置的項目正在改變,但我不明白如何。這使得重現這種行爲有點困難。
我覺得AngularJS在路由發生變化時創建了MainController的新實例,但我不是100%確定的,所以我不打算把它作爲答案。 – BenCr
這就是我如此難倒 - 它必須得到重新實例化,但我不知道如何。 :-( –
也許所有的控制器都會在路由改變的時候重新實例化,控制器不是很長壽的對象 – BenCr