在angularJS 1.3.X中解析ui-router时重定向到另一个状态

时间:2015-04-30 10:10:52

标签: angularjs angular-ui-router

就是这样的情况:我想根据我在父状态下解析的资源的状态重定向到不同的状态。

我的问题是,我可以使用$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 
            }
        }
    })
})

0 个答案:

没有答案