我正在尝试使用UI路由器构建类似于Google Analytics的应用程序。在第一页上有许多网站配置文件,当我选择一个配置文件时,无论我在哪个GA页面(报告,自定义,管理员),其ID都会保留在URL中。
我无法弄清楚如何使用UI路由器完成此操作。最简单的答案可能是将配置文件ID放入每个状态URL以及部分视图中的每个链接。这很难维持。
我想将个人资料ID保留在网址中,原因有两个:
这样做的正确方法是什么?
答案 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并使用它来构建链接。