除了将它们注入控制器之外,有没有办法访问已解决的状态依赖项?

Is there a way to access resolved state dependencies besides injecting them into the controller?

我需要从服务或指令访问已解析的数据,以便在整个应用程序中执行一些常规操作。

我似乎能够访问已解析数据的唯一方法是将其注入控制器。

这是我设置的测试数据:

resolve: {
    test: function() {
         console.log("resolving");
        return 5+2;
    }
}

我已经在我的控制器中试过了,只是为了看看会发生什么,但它不起作用:

$injector.invoke(function(test) {
    console.log("injected", test);
    $scope.test = test;
});

我得到:

"Error: [$injector:unpr] Unknown provider: testProvider <- test

看来已解析的数据作为局部变量传递给状态控制器上的调用函数。

我还发现我可以从状态访问解析对象:

$state.current.resolve

但这是没有解析数据的原始解析对象。我可以调用这些函数来解析数据,但我会重新解析依赖关系。如果对解析对象有任何请求,它们将被调用两次。

我只需要像访问数据属性或 $state.params.

一样访问已解析的值

终于想通了

可以通过$state.$current 对象访问所有已解析的数据:

$state.$current.locals.globals