我正在尝试在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
  });


应该做的工作。

09-09 21:26
查看更多