Angularjs 控制器中的$stateParams为空
我使用ui.router加载一个视图,然后加载需要两个参数的不同API路由:用户名和id app.route.jsAngularjs 控制器中的$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
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,因为当然,参数是预期的。上面的内容有一些问题
$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])代码>