将所有$ stateParams重置为默认值

时间:2018-02-15 13:41:15

标签: angularjs angular-ui-router

如何将所有$ stateParams重置为其定义的默认值?当然,我可以手动重置它们,如:

$state.go(".", {
  param1: "",
  param2: 0,
  param3: false
});

但是自动重置为定义的默认值会很好。

$stateProvider
  .state("myState", {
    url: "?param1&param2&param3",
    params: {
      param1: {
        value: "",
        type: "string",
        squash: true
      }, 
      param2: {
        value: 0,
        type: "int",
        squash: true
      }, 
      param3: {
        value: false,
        type: "bool",
        squash: true
      }
    }
  });

在设置值之前,手动执行此操作会强制我查找每个参数值。

我完全不想将所有内容设置为未定义,因为这可能会破坏某些逻辑。

修改

添加版本信息:

  • AngularJS 1.6.3
  • UI-Router:1.0.0-beta.3

2 个答案:

答案 0 :(得分:0)

如果您正在使用 ui-sref,那么您还可以提供 ui-sref="details({msg: ''}) 之类的状态参数,或者如果您想清除状态参数,当您转换到当前状态时,您可以提及 $state.go('.', {msg: undefined} );

答案 1 :(得分:0)

有点晚了,但如果有人遇到同样的问题:

您可以将 inherit TransitionOptions 设置为 false 以强制使用 params 的默认值。

$state.go(".", {param1: ""}, {inherit: false});

在此处查看文档: https://ui-router.github.io/ng1/docs/latest/interfaces/transition.transitionoptions.html#inherit