我有一个SPA Angular应用程序,它有两个主要的html div。其中一个经常变化,另一个经常变化。经常更改的一个在app.config中使用$ route。更改频率较低的div也需要知道网址更改,因此我想听取$routeParamas
中的更改并做相应的操作。
所以在我的控制器里我有:
.controller('SecondaryCtrl', function ($scope, $routeParams, MyService) {
$scope.$watch('routeParams', function () {
console.log('routeParams: ', $routeParams);
// I need $routeParams.projectId to compose an API call.
});
...
});
在控制台中,$routeParams
作为空对象返回。我知道如果在app.config中定义了Controller和路由,$routeParams
可用,但app.config已经定义了链接到PrimaryCtrl
的给定路由:
.config( function ($interpolateProvider, $routeProvider) {
$routeProvider
.when('/project/:projectId', {
templateUrl : 'partials/_project_detail.html',
controller: 'PrimaryCtrl',
resolve: {
project: function ($route, MyService) {
return MyService.get('projects/', $route.current.params.projectId);
},
}
})
那么,当$routeParams
更改时,如何才能访问SecondaryCtrl
中的$routeParams
?
答案 0 :(得分:1)
您可以在观看$routeChangeSuccess
内收听$routeParams
事件,如下所示:
.controller('SecondaryCtrl', function ($scope, MyService) {
$scope.$on('$routeChangeSuccess', function (event, current, previous) {
// current is the current route
// previous is the previous route
});
...
});