AngularJs ui-router成功转换获取 Controller

标签 angularjs angular-ui-router

我已经创建了一个服务来运行任何已请求的 http 请求。这在 ui-router onSuccess 钩子(Hook)中运行,看起来像这样:

$transitions.onSuccess({}, function() {
    document.body.scrollTop = document.documentElement.scrollTop = 0;
    console.log('%cwe have completed a transition', 'color: green;');
    httpQueueService.process();
});

这个问题是 Controller 在这个钩子(Hook)之后初始化,所以我不能在不添加超时的情况下捕获 http 请求:

function process() {
    $timeout(() => {
        let t = angular.copy(queue);
        console.log('processing', t, t.length);
        queue.forEach((task) => invoke(task));
    }, 500);
}

我知道超时只有半秒,我可能会进一步减少它,但这似乎不对。 如果能直接从success hook中获取已经初始化好的controller就更好了。

有没有办法做到这一点?

我确实通过查看成功 Hook 中的转换对象进行了尝试:

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

但是那里似乎没有 Controller

最佳答案

您正在寻找的是用户界面路由器状态的“解决”选项。如果我正确理解您的描述,您正在尝试将数据(从您的 httpQueueService)异步加载到新状态的 Controller 。我建议你看看官方的 ui-router 文档,尤其是教程。显然你可以跳过大部分,所以从第二个开始:https://ui-router.github.io/ng1/tutorial/hellosolarsystem对你来说似乎可行。

基本上它处理您正在做的事情的异步性质 - 没有添加任何确切的、硬编码的超时。

这是另一篇很棒的文章,我发现它在处理转换的异步查询时很有帮助:https://medium.com/opinionated-angularjs/advanced-routing-and-resolves-a2fcbf874a1c

我希望这对您有所帮助,但是,如果您有任何更具体的问题,请告诉我们!

关于AngularJs ui-router成功转换获取 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56900650/

相关文章:

angularjs - UI 路由器 : redirect to child state when navigating to abstract parent state

javascript - angular-route 和 angular-ui-router 有什么区别?

javascript - 用于检查 Angular Bootstrap 模态范围的 Jasmine 单元测试

javascript - 单击 AngularJS 中的链接后,信息不会刷新。我有 {{ value }} 但没有数据

angularjs - 使用 Socket IO、Laravel、Redis、Angularjs 向特定用户发送数据

html - 如何对齐 Angular-Material 工具栏中的文本输入?

html - ui-router 在访问页面时在我的 ui-views 中显示原始代码

angularjs - 什么是抽象 :true do in ui-router?

javascript - 带有 typescript 的 Angular-js - 数据应该存储在 Controller 还是服务中?

javascript - 带有清除字段按钮的 Angular JS ionic 搜索框