呼喚遠方
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);

偶然的你
TA貢獻1841條經驗 獲得超3個贊
實際上,您可以執行此操作。
$state.go("state-name", {param-name: param-value}, {location: false, inherit: false});
這是有關state.go中選項的官方文檔
在那里描述了所有內容,您可以看到這是完成的方法。
添加回答
舉報
0/150
提交
取消