就是这样的情况:我想根据我在父状态下解析的资源的状态重定向到不同的状态。
我的问题是,我可以使用$state.go
来中断解析吗?这种状态的子状态是否会在$state.go
之前执行?
从我的实验中,使用示例代码,如果我向/parentState/default
状态为aResource
的网址A
发送请求,它仍会执行这些状态的所有解析功能-链。有没有更好的方法逃离国家链?
这是示例代码:
$stateProvider
.state('PARENT_STATE', {
url: '/parentState',
abstact: true,
resolve: {
aResource: function($state, RemoteDataService) {
return RemoteDataService.getItem()
.then(function(aResource) {
if (aResource.status === 'A') {
$state.go('A_CHILD_STATE');
return;
} else if (aResource.status === 'B') {
$state.go('B_CHILD_STATE');
return;
} else {
return aResource;
}
})
}
}
})
.state('PARENT_STATE.CHILD_STATE_A', {
url: 'a',
})
.state('PARENT_STATE.CHILD_STATE_B', {
url: 'b'
})
.state('PARENT_STATE.DEFAULT_CHILD_STATE', {
url: 'default',
resolve: {
aResource: function() {
// this line will be executed even if aResource.state === 'A' or 'B'
// but I hope I can ignore this function in such condition
}
}
})
})