Angular UI-router - 保持url param跨越更多状态

时间:2014-06-17 06:40:25

标签: javascript angularjs angular-ui-router

我正在尝试使用UI路由器构建类似于Google Analytics的应用程序。在第一页上有许多网站配置文件,当我选择一个配置文件时,无论我在哪个GA页面(报告,自定义,管理员),其ID都会保留在URL中。

我无法弄清楚如何使用UI路由器完成此操作。最简单的答案可能是将配置文件ID放入每个状态URL以及部分视图中的每个链接。这很难维持。

我想将个人资料ID保留在网址中,原因有两个:

  • 启用书签和页面刷新
  • 允许用户在不同的浏览器标签中使用不同的配置文件

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以这样做:

- 像这样定义状态

.state('yourState', {
    url: 'state/:paramOne/:paramTwo',
    templateUrl: 'yourstate.html',
    controller: 'YourStateCtrl'
})

- 在您的观看中可以访问$ stateParams

app.run(function ($rootScope, $state, $stateParams) {
    $rootScope.$stateParams = $stateParams;
});

- 将当前$ stateParams值应用于视图中的链接;如果尚未定义 - 使用默认值(可能是$rootScope.defaultParamOne = ''; $rootScope.defaultParamTwo = '';

<a ui-sref="yourState({
    paramOne: $stateParams.paramOne || defaultParamOne, 
    paramTwo: $stateParams.paramTwo || defaultParamTwo
})">your state</a>

这样ui-router将从当前url获取params并使用它来构建链接。