gpt4 book ai didi

angularjs - UI 路由器 $stateparams 未在 $state.go() 中注册

转载 作者:行者123 更新时间:2023-12-04 02:17:17 26 4
gpt4 key购买 nike

我试图以编程方式非常简单地进入另一个状态并传递参数,所以:

$stateService.go('login', {
messages: [{
service: 'Auth',
type: 'error',
msg: "Your session has expired. Please log in to continue..."
}]
});

$stateService 是为了避免 ui-router 和 state 之间的循环依赖(两者都使用 $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'
});
}]);

然而,当我转到登录 Controller 时

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 为空。我做错了什么?

最佳答案

任何应该是状态一部分的参数都必须被定义。在 url 中或通过 params:{} object:

 $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

关于angularjs - UI 路由器 $stateparams 未在 $state.go() 中注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33133606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com