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

标签 angularjs state angular-ui-router

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

$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/

相关文章:

reactjs - React Hooks,如何实现useHideOnScroll hook?

javascript - AngularJS 路由器代码不工作

javascript - angularjs无法在链接函数内分配作用域变量

javascript - 无法从 Protractor 测试中的元素值返回字符串

javascript - 如何在 AngularJS 中创建和显示多个自定义指令

javascript - React - Forms - 如何处理子组件更新

javascript - Mobx 和 React。可观察到的变化后如何处理焦点输入?

javascript - AngularJS 中的循环依赖

angularjs - 使用 angularjs 在 ionic v1 中查询字符串

javascript - 在 Angular2 中管理不同的基本布局