猿问

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

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


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


我想做这样的事情。


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


function myCtrl($stateParams) {

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

};

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


呼唤远方
浏览 568回答 3
3回答

红糖糍粑

这个问题有两个部分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);

偶然的你

实际上,您可以执行此操作。$state.go("state-name", {param-name: param-value}, {location: false, inherit: false});这是有关state.go中选项的官方文档在那里描述了所有内容,您可以看到这是完成的方法。
随时随地看视频慕课网APP
我要回答