我正在尝试在Angular和Django rest框架上构建简单的应用程序。
我有下一个根应用程序:
app.js
angular
.module('sharePhotoApp', [
'ngRoute',
'sharePhotoApp.controllers',
'sharePhotoApp.services'
])
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: '/',
controller: 'PostListController'
})
.when('/:username', {
templateUrl: '/user/',
controller: 'UserDetailController'
})
.otherwise({
redirectTo: '/'
});
}]);
和下一个控制器:
angular
.module('sharePhotoApp.controllers')
.controller('UserDetailController', UserDetailController)
UserDetailController.$inject = ['$scope','$routeParams','userService'];
function UserDetailController($scope, $routeParams, userService){
alert($routeParams.username);
$scope.user = userService.get({ username: $routeParams.username });
}
我试图遵循浏览器中的下一个URL:http://127.0.0.1:8000/user/#/admin
我想在这种情况下应该使用用户名参数触发路由。
但是我已经不确定了。
谁能解释我在哪里做错了?
最佳答案
“请注意,仅在更改路线后才更新$ routeParams
成功完成。这意味着您不能依靠
$ routeParams在路由解析功能中正确。相反,您可以
使用$ route.current.params访问新路由的参数。”
https://docs.angularjs.org/api/ngRoute/service/$routeParams
您还安装了ngRoute模块吗?
如描述所述,路由尚未在控制器中完成,因此参数也未定义。
$scope.$on('$routeChangeSuccess', function() {
// $routeParams should be populated here
});
应该做的工作。