UI 路由器 $stateparams 未在 $state.go() 中注册
UI Router $stateparams not registering in $state.go()
我试图以编程方式非常简单地进入另一个状态并传递参数,所以:
$stateService.go('login', {
messages: [{
service: 'Auth',
type: 'error',
msg: "Your session has expired. Please log in to continue..."
}]
});
$stateService
是为了避免ui-router和状态之间的循环依赖(两者都使用$http)
var $stateService = $injector.get('$state');
这是登录状态,加载到 $stateProvider
:
angular
.module('kitchenapp')
.config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'views/login/login.html',
controller: 'LoginCtrl',
controllerAs: 'vm'
});
}]);
但是当我进入登录控制器时
angular
.module('kitchenapp.controllers')
.controller('LoginCtrl', LoginCtrl);
LoginCtrl.$inject = ['$location', 'Auth', 'toastr', '$stateParams', '$log'];
function LoginCtrl($location, Auth, toastr, $stateParams, $log) {
var vm = this;
angular.extend(vm, {
name: 'LoginCtrl',
messages: $stateParams.messages,
...
$stateParams.messages
为空。我做错了什么?
必须定义应属于状态的任何 parameter
。在 url
中或通过 params: {}
对象:
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'views/login/login.html',
controller: 'LoginCtrl',
controllerAs: 'vm',
params: { messages : null },
});
查看更多详情:
How to pass parameters using ui-sref in ui-router to controller
您应该在状态中注册 "messages" 参数。参见 https://github.com/angular-ui/ui-router/wiki/URL-Routing#important-stateparams-gotcha
我试图以编程方式非常简单地进入另一个状态并传递参数,所以:
$stateService.go('login', {
messages: [{
service: 'Auth',
type: 'error',
msg: "Your session has expired. Please log in to continue..."
}]
});
$stateService
是为了避免ui-router和状态之间的循环依赖(两者都使用$http)
var $stateService = $injector.get('$state');
这是登录状态,加载到 $stateProvider
:
angular
.module('kitchenapp')
.config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'views/login/login.html',
controller: 'LoginCtrl',
controllerAs: 'vm'
});
}]);
但是当我进入登录控制器时
angular
.module('kitchenapp.controllers')
.controller('LoginCtrl', LoginCtrl);
LoginCtrl.$inject = ['$location', 'Auth', 'toastr', '$stateParams', '$log'];
function LoginCtrl($location, Auth, toastr, $stateParams, $log) {
var vm = this;
angular.extend(vm, {
name: 'LoginCtrl',
messages: $stateParams.messages,
...
$stateParams.messages
为空。我做错了什么?
必须定义应属于状态的任何 parameter
。在 url
中或通过 params: {}
对象:
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'views/login/login.html',
controller: 'LoginCtrl',
controllerAs: 'vm',
params: { messages : null },
});
查看更多详情:
How to pass parameters using ui-sref in ui-router to controller
您应该在状态中注册 "messages" 参数。参见 https://github.com/angular-ui/ui-router/wiki/URL-Routing#important-stateparams-gotcha