Angularjs 控制器中的$stateParams为空

Angularjs 控制器中的$stateParams为空,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我使用ui.router加载一个视图,然后加载需要两个参数的不同API路由:用户名和id app.route.js angular .module('app.route',['ui.router']) .config([ '$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) { $urlR

我使用ui.router加载一个视图,然后加载需要两个参数的不同API路由:用户名和id

app.route.js

 angular
    .module('app.route',['ui.router'])
    .config([
        '$stateProvider',
        '$urlRouterProvider',
        function ($stateProvider, $urlRouterProvider) {

            $urlRouterProvider.when('', '/{username}/{id:int}');
            $urlRouterProvider.when('/', '/{username}/{id:int}');
            $urlRouterProvider.otherwise('/{username}/{id:int}');

            $stateProvider.state('module', {
                url: '/{username}/{id:int}',
                templateUrl: 'app/module/module.html',
                controller: 'ModuleController',
            });

        }
    ]);
module.controller.js

 function ModuleController($state, $stateParams) {

    console.log('$stateParams: ', $stateParams); // returns empty
    console.log('$state.params: ', $state.params); // returns empty
  }
即使我的url看起来很好(例如),两个参数都被忽略。我错过什么了吗

以下是输出:

 $stateParams:  Object {}
 $state.params:  Object {}
我没有任何与此相关的错误。
我得到了一些关于路由的404,因为当然,参数是预期的。

上面的内容有一些问题

  • 您在html中多次使用了ng controller=“ModuleController”-这些实例正在创建中,但我认为您只希望创建一个与ui视图关联的控制器。为状态定义控制器时,不需要使用ng控制器

  • $urlRouterProvider。否则
    需要转到完全定义的状态-需要定义状态参数。通常情况下,这将是一个没有参数的“主”状态,但我更新了您的示例以转到/user/none/0。由于“{id:int}”不是int,您的版本的
    否则将进入无效状态

  • 您可以删除
    $urlRouterProvider.when
    语句,并将
    否则
    更新为
    $urlRouterProvider.when('/user/none/0')以转到默认状态。然后使用ui sref或$state进入不同的路线。转到:


    我在索引页上使用了一个经典页面。你能设置一个plunkr吗?你确定你的控制器的声明,我们能看到完整的代码吗
    angular.controller('ModuleController',函数($state,$stateParams){…})
    刚刚创建了一个plunker,并且可能会重现相同的问题:您没有在控制器声明中注入
    $state
    $stateParams
    <代码>.controller('ModuleController',[“$state”,“$stateparms”,ModuleController])