为什么$ routeParams不起作用?未定义

时间:2016-02-23 11:31:08

标签: javascript angularjs

我很想在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参数触发路由。 但我没有定义。 谁能解释我做错的地方?

1 个答案:

答案 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
  });

应该做的工作。