我希望能够使用ui-router转换为状态并传递任意对象。

我知道通常会使用$stateParams,但我相信此值会插入到URL中,并且我不希望用户能够对此数据添加书签。

我想做这样的事情。

$state.transitionTo('newState', {myObj: {foo: 'bar'}});

function myCtrl($stateParams) {
   console.log($stateParams.myObj); // -> {foo: 'bar'}
};

有没有办法在不将值编码到URL的情况下执行此操作?

最佳答案

在0.2.13版中,您应该可以将对象传递到$ state.go,

$state.go('myState', {myParam: {some: 'thing'}})

$stateProvider.state('myState', {
                url: '/myState/{myParam:json}',
                params: {myParam: null}, ...

然后访问 Controller 中的参数。
$stateParams.myParam //should be {some: 'thing'}

myParam将不会显示在URL中。

来源:

请参阅christopherthielen https://github.com/angular-ui/ui-router/issues/983的评论,为方便起见,此处转载于此:

10-08 19:05