我面临着在两个状态之间传递数据而不暴露url中的数据的问题,这就像用户不能真正直接登陆到这个状态一样。
例如。我有两个状态"A“和"B”。我在状态"A“中执行一些服务器调用,并将调用的响应传递给状态"B”。服务器调用的响应是一个字符串消息,它很长,所以我不能在url中公开它。
那么,在angular ui路由器中,有没有办法在不使用url参数的情况下在状态之间传递数据?
发布于 2016-10-19 01:06:51
params对象包含在$stateParams中,但不会是url的一部分。
1)在路由配置中:
$stateProvider.state('edit_user', {
url: '/users/:user_id/edit',
templateUrl: 'views/editUser.html',
controller: 'editUserCtrl',
params: {
paramOne: { objectProperty: "defaultValueOne" }, //default value
paramTwo: "defaultValueTwo"
}
});
2)在控制器中:
.controller('editUserCtrl', function ($stateParams, $scope) {
$scope.paramOne = $stateParams.paramOne;
$scope.paramTwo = $stateParams.paramTwo;
});
3A)从控制器改变状态
$state.go("edit_user", {
user_id: 1,
paramOne: { objectProperty: "test_not_default1" },
paramTwo: "from controller"
});
3B)更改html中的状态
<div ui-sref="edit_user({ user_id: 3, paramOne: { objectProperty: 'from_html1' }, paramTwo: 'fromhtml2' })"></div>
https://stackoverflow.com/questions/28248236
复制相似问题