我很想在Angular和Django休息框架上构建简单的应用程序。 我有一个下一个根应用程序: 的 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 });
}
我尝试在浏览器中关注下一个网址:http://127.0.0.1:8000/user/#/admin 我想在这种情况下应该用username参数触发路由。 但我没有定义。 谁能解释我做错的地方?
答案 0 :(得分:1)
"请注意,$ routeParams仅在路由更改后更新 成功完成。这意味着你不能依赖 $ routeParams在路由解析函数中是正确的。相反,你可以 使用$ route.current.params访问新路由的参数。"
https://docs.angularjs.org/api/ngRoute/service/$routeParams
您是否还安装了ngRoute模块?
如描述所示,路径未在控制器中完成,因此参数也未定义。
$scope.$on('$routeChangeSuccess', function() {
// $routeParams should be populated here
});
应该做的工作。