Angularjs 解析$injector中不可用的对象

Angularjs 解析$injector中不可用的对象,angularjs,dependency-injection,route-provider,Angularjs,Dependency Injection,Route Provider,我的路线定义如下: .state('user_login', { url: '/user/login', templateUrl: 'login.tpl.html', controller: 'AuthenticationCtrl', resolve: { practice: ['$q', function($q) {

我的路线定义如下:

.state('user_login', {
                url: '/user/login',
                templateUrl: 'login.tpl.html',
                controller: 'AuthenticationCtrl',
                resolve: {
                    practice: ['$q', function($q) {
                        return $q.when({});
                    }]
                }
            })
当我将“练习”注入控制器时,事情会按预期进行。但是,当我使用$injector时:

$injector.get('practice')

我得到一个未知的提供程序异常。解析对象对$injector不可用吗?如何在控制器中公开它们,而不在控制器定义中显式注入它们


注意:我使用的是Angular 1.2.x

否,您无法通过
$injector
单独获取它们。和

解析对象不是可以单独注入的任何服务或任何其他实体。当控制器
AuthenticationCtrl
通过路由器绑定时,它是路由器注入的特殊依赖项。不能单独获取实例。只有路由器知道解析属性,当路由器实例化控制器时(解析所有解析依赖项后),它会在注释中查找解析属性(通过定义
AuthenticationCtrl
中的显式/隐式依赖项注释指定的依赖项列表)并根据需要注入它们

这种特殊的实现可以在其他组件中找到,如angular ui modal、ui状态路由器、angular路由器的routeprovider等