在过渡期间,我希望能够更改参数值。在文档中,我找到了一种访问目标状态参数using params('to')
method的方法。在我的代码中它看起来像这个
$transitions.onStart({ from: 'state3', to: 'state1' }, function ($transition$) {
var params = $transition$.params('to');
if(someCondition){
params.success = true;
}
$transition$.params['to'] = params;
});
我的state1
定义如下所示
$stateProvider
.state('state1', {
url: '/',
params: {
success: false,
},
...
但是,当我执行转换时,使用上面列出的代码,我的success
参数始终具有默认值(false
)。
问题是 - 是否可以在转换期间更改参数值?
背景:我有两个按钮,允许从state3
过渡到state1
。一个我可以从$scope
控制,但另一个是$scope
之外的面包屑链接。我想我可以使用这个$transitions
钩子来检查一些条件并将success
设置为适当的值。
我偶然发现了回复suggesting performing whole new $state.go的新参数,但我发现它有点凌乱和黑客。我有一种感觉,它可以更简单,更清洁的方式实现。
答案 0 :(得分:1)
我没有设法在特定转换期间更改这些值,但当我将onStart
更改为onSuccess
时,我只能使用新参数进行全新转换
$transitions.onSuccess({ from: 'state3', to: 'state1' }, function ($transition$) {
var fromParams = $transition$.params('from');
if (someCondition) {
return $state.transitionTo('state1');
}
return $state.transitionTo('state1', { success: true }, { notify: false });
});
更改为onSuccess
会阻止无限转换循环,这是在onStart
事件中调用新转换时发生的。