我希望能够使用ui-router转换为状态并传递任意对象。我知道通常$stateParams会使用该值,但是我相信此值会插入URL中,并且我不希望用户能够为该数据添加书签。我想做这样的事情。$state.transitionTo('newState', {myObj: {foo: 'bar'}});function myCtrl($stateParams) { console.log($stateParams.myObj); // -> {foo: 'bar'}};有没有办法在不将值编码到URL的情况下执行此操作?
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
这个问题有两个部分
1)使用不会更改网址的参数(使用params属性):
$stateProvider
.state('login', {
params: [
'toStateName',
'toParamsJson'
],
templateUrl: 'partials/login/Login.html'
})
2)将对象作为参数传递:嗯,现在没有直接的方法,因为每个参数都转换为字符串(EDIT:从0.2.13开始,这不再成立-您可以直接使用对象),但是您可以通过自己创建字符串来解决它
toParamsJson = JSON.stringify(toStateParams);
然后在目标控制器中再次反序列化对象
originalParams = JSON.parse($stateParams.toParamsJson);
偶然的你
TA贡献1841条经验 获得超3个赞
实际上,您可以执行此操作。
$state.go("state-name", {param-name: param-value}, {location: false, inherit: false});
这是有关state.go中选项的官方文档
在那里描述了所有内容,您可以看到这是完成的方法。
添加回答
举报
0/150
提交
取消