angular.js routing和stateparams

时间:2015-02-22 23:06:31

标签: javascript angularjs angular-ui-router meanjs

我试图修改meanjs的标准用户模块。我添加了一条简单的路线:

state('users', {
            url: '/users/:username',
            templateUrl: 'modules/users/views/view-profile.client.view.html'
        });

在我看来:

data-ng-controller="ViewProfileController" data-ng-init="findUser()"

我还将$ stateParams注入我的控制器。所以在我的ViewProfileController - findUser函数中,当我写这个时:

console.log($stateParams.username)

我希望得到用户名参数。但它返回undefined

当我以这种方式设置路线时,

state('users', {
            url: '/users/:username',
            template: function ($stateParams){
                return $stateParams.username;
            }
        });

它返回用户名。我不知道什么是错的或遗失的。有什么想法吗?

编辑:这是我的完整控制器代码

'use strict';

angular.module('users').controller('ViewProfileController', ['$scope', '$http', '$stateParams', '$location', 'Users', 'Authentication', 
function($scope, $http, $location, Users, Authentication, $stateParams) {
    $scope.user = Authentication.user;


    $scope.findUser = function () {
        console.log($stateParams);
        ...
    };
}
]);

2 个答案:

答案 0 :(得分:2)

您的依赖项不匹配 - 依赖项列表需要以相同的顺序匹配控制器函数中的参数:

'use strict'; 
angular.module('users')
.controller('ViewProfileController', ['$scope', '$http', '$stateParams', '$location', 'Users', 'Authentication', 
  function($scope, $http, $stateParams, $location, Users, Authentication) { 
    $scope.user = Authentication.user; 
    $scope.findUser = function () { 
      console.log($stateParams); 
    }; 
  }
]);

答案 1 :(得分:0)

我应该使用控制器而不是模板。

template:代码替换为以下代码段:

controller: function($stateParams){
    console.log('username: '+$stateParams.username);
}

You can see a complete example of this feature here