javascript - AngularJS 在运行函数中访问 $stateParams

标签 javascript angularjs angular-ui-router

我希望能够在我的 run 函数中访问 url 参数,并根据这些参数执行操作。但是,我很惊讶地看到 ui.router 的 $stateParams 对象在我的运行函数中是空的。

angular.module('app', ['ui.router'])
.run(['$rootScope', '$state', '$stateParams', '$location', function($rootScope, $state, $stateParams, $location) {
    $rootScope.$state = $state;
    $rootScope.location = $location;
    $rootScope.$stateParams = $stateParams;
    $rootScope.$on('$stateChangeStart', function(event, toState) {
      if (toState.name === 'main') {
      event.preventDefault();
      $state.go('main.child', {

        param: 1

      })
      }
    });
    console.log('$stateParams is empty!');
    console.log($stateParams);
    console.log($rootScope.$stateParams);
}])
.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {

    $stateProvider
        .state('main', {

            url: '',
            template: '<div>hey</div><div ui-view></div>'

        })
        .state('main.child', {

            url: '/:param',
            template: 'child state template'


        });
}]);

是否可以在 run 函数中访问从 $stateParams 访问的参数?或者它们只在 config 函数中可用?为什么它们不能在 run 函数中访问?

请联系:http://plnkr.co/edit/1YXKRmR48LyxbGXWq66Y?p=preview

感谢您的帮助。

最佳答案

看起来您正在使用 StateChangeStart 事件并且您可以访问此事件中的参数:

 $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
//you code goes here
console.log(toParams);
}

我正在使用它向参数(身份验证重定向)添加一些自定义逻辑

关于javascript - AngularJS 在运行函数中访问 $stateParams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32302411/

相关文章:

javascript - 无法读取未定义的属性 'createElement'

javascript - 使用 AngularJS 在书写页面中进行预览

javascript - 如何在ui-sref中单绑定(bind)?

javascript - 选择的下拉列表 : make search_contains true for all dropdown at once

javascript - 如何使用图像自定义 slider 处理程序

android - Ionic Android 版本控制失败

javascript - .state 的解析属性无法按预期工作

angular-ui-router - UI 路由器 : get params of "to" and "from" state with $transitions service

javascript - 使用 es2015 map 获取索引失败

javascript - 是否可以在同一个元素上应用多个 AngularJS Controller