UI路由器$ stateParams只能读取

时间:2017-05-16 20:27:15

标签: javascript angularjs angular-ui-router

我目前正在使用$ stateParams将id传递给新状态。工作正常,但如果用户重新加载页面怎么办?显然,$ stateParams中没有任何值。解决这个问题的方法是在初始页面加载时将$ stateParam id加载到localStorage。在重新加载时,如果$ stateParams的id不存在,则手动分配它。例如:

// Ensure params are set when page is reloaded
if (!$stateParams.id) {
  $stateParams.id = localStorageService.get('campaignId');
  $state.go($state.current, $stateParams);
}

在我的本地机器上运行。但是在我的开发服务器上,我收到了这个错误:

Cannot assign to read only property 'id' of object '#<Object>'

有没有办法让$ stateParams可写?

希望这是有道理的,先谢谢。

2 个答案:

答案 0 :(得分:0)

由于我找不到实际写入$ stateParams的解决方案,我只是为这种情况创建了一个新对象。

var stateParamsClone = {};
// Ensure params are set when page is reloaded
if (!$stateParams.id) {
  stateParamsClone.id = localStorageService.get('campaignId');
  $state.go($state.current, stateParamsClone);
}

答案 1 :(得分:0)

这对我有用

let $stateParams = Object.assign({}, $transition$.params());