为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用UI路由器将对象传递到状态?

如何使用UI路由器将对象传递到状态?

呼唤远方 2019-10-08 14:42:09
我希望能够使用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);


查看完整回答
反对 回复 2019-10-08
?
偶然的你

TA贡献1841条经验 获得超3个赞

实际上,您可以执行此操作。


$state.go("state-name", {param-name: param-value}, {location: false, inherit: false});

这是有关state.go中选项的官方文档


在那里描述了所有内容,您可以看到这是完成的方法。


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 566 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信