如何将params从以前的状态传递到有角度的新状态?

时间:2017-04-24 19:11:01

标签: javascript angularjs routing

我的仪表板中有10个类似的框,每个框都显示特定设备的不同值。当用户点击每个时,我必须将它们引导到新页面,该页面显示有关该设备的更多信息。

所有设备的第二页布局都是一样的。我只需要更新$ scope。

实现此目的的干净角度方式是什么,最好不要在网址中添加查询?

我正在使用$ stateProvider并试图让它与onEnter()一起工作但还不行。

1 个答案:

答案 0 :(得分:1)

$stateParams应该做到这一点。要使用它,您需要在路由时指定参数。例如:

(function(){
  'use strict';

  angular
    .module('app')
    .config(ApplicationConfig);

    //set dependencies for ApplicationConfig
    ApplicationConfig.$inject = ['$stateProvider'];

    function ApplicationConfig($stateProvider){
      //Define route states
      $stateProvider
      .state('main', {
        abstract: true,
        url: '/main',
        templateUrl: 'pages/main/main.html',
        controller: 'MainCtrl',
        controllerAs: 'main',
        cache: true,
        params: {
          user: null
        }
      });
    }

然后使用$state.go('stateName', { param: param }),例如(按照上一个示例):

//Inside your original controller
function goToMainPage(param) {
  $state.go('main', { user: param });
}

最后,您可以通过$stateParams.param访问目标控制器中的参数,或者在前面的示例中$stateParams.user