$ state.params和$ stateParams传递数据

时间:2017-09-13 15:41:45

标签: angularjs state

我看了很多帖子,但没有一个有效: 我想使用 $ state.go 传递一些数据。

这是我的状态:

.state('app.404', {
    url: '404',
    views: {
      'header@': {
        templateUrl: 'views/empty.html'
      },
      'content@': {
        templateUrl: '404.html',
        controller: 'fofController'
      },
      'footer@': {
        templateUrl: 'views/empty.html'
      },
      params: {errorInfo: null}
    }
  })

这是我传递数据的方式:

$state.go('app.404', {errorInfo: {status: 403, message: 'unauthorised', fix: 'You have to login'}});

这就是我尝试捕获控制器中数据的方式:

.controller('fofController', ['$scope', '$state',
function ($scope, $state) {
  console.log($state.params);
}])

但答案是空对象( {} )。我也像下面一样使用 $ stateParams ,但我得到了相同的结果,一个空对象:

.controller('fofController', ['$scope', '$stateParams',
function ($scope, $stateParams) {
  console.log($stateParams);
}])

1 个答案:

答案 0 :(得分:0)

选项-1

.state('404.contact/', {
    url: '/contact/:obj',
    templateUrl: "contact.html",
    controller: "contactCtrl",
    params: {
        obj: null,
    }
})
.state('404.header', {
    url: '/header/:number',
    templateUrl: "header.html",
    controller: "headerCtrl",
    params: {
        obj: null
    }

})

选项-2

$state.go(.....

您应该尝试使用此代码

$state.transitionTo(...

选项-3

也许尝试使用网址转移

$stateProvider
.state('user', {
   url: '/user/:obj',
   templateUrl: 'templates/user.html',
   controller: 'UserCont'
})

也许这些是解决问题的方法。

Working example with $state.go()