AngularJs ui路由器成功转换获取控制器

AngularJs ui路由器成功转换获取控制器,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我创建了一个服务,用于运行已请求的任何http请求。这在ui router onSuccess钩子中运行,如下所示: $transitions.onSuccess({}, function() { document.body.scrollTop = document.documentElement.scrollTop = 0; console.log('%cwe have completed a transition', 'color: green;'); httpQue

我创建了一个服务,用于运行已请求的任何http请求。这在ui router onSuccess钩子中运行,如下所示:

$transitions.onSuccess({}, function() {
    document.body.scrollTop = document.documentElement.scrollTop = 0;
    console.log('%cwe have completed a transition', 'color: green;');
    httpQueueService.process();
});
问题是控制器在这个钩子之后初始化,所以我不能在不添加超时的情况下捕获http请求:

function process() {
    $timeout(() => {
        let t = angular.copy(queue);
        console.log('processing', t, t.length);
        queue.forEach((task) => invoke(task));
    }, 500);
}
我知道超时时间只有半秒,我可能会进一步减少,但这似乎不对。 如果我能直接从successhook获取已初始化的控制器,那就更好了

有没有办法做到这一点

我确实尝试过在成功挂钩中查看转换对象:

$transitions.onSuccess({}, function(transition) {
    console.log(transition);
});

但是那里似乎没有控制器

您要寻找的是ui路由器状态的“解析”选项。如果我正确理解了您的描述,您正在尝试将数据(从httpQueueService)异步加载到新状态的控制器。我建议您看看官方的ui路由器文档,尤其是教程。显然你可以跳过大部分,所以从第二个开始:对你来说似乎是可行的

基本上,它处理您正在做的事情的异步性质,而不添加任何精确的、硬编码的超时

下面是另一篇很棒的文章,我发现这篇文章在处理转换上的异步查询时很有帮助:


我希望这有帮助,但是,如果您有任何更具体的问题,请让我们知道

你能更好地解释哪个“这个钩子之后控制器被初始化”吗?不知道如何更好地解释它。我指的是成功过渡的州的控制者。