Angularjs 使用“角度”向非角度对象中注入

Angularjs 使用“角度”向非角度对象中注入,angularjs,dependency-injection,inversion-of-control,Angularjs,Dependency Injection,Inversion Of Control,有没有一种方法可以向Angular$injector提供非角度注入目标,从而可以将$http、$scope、$location或$q等角度构造注入其中 //non-angular injection container var injectionTarget= { $http:undefined, $scope:undefined } //means to inject into target - this is the part in question var injecto

有没有一种方法可以向Angular$injector提供非角度注入目标,从而可以将$http、$scope、$location或$q等角度构造注入其中

//non-angular injection container
var injectionTarget= {
    $http:undefined,
    $scope:undefined
}

//means to inject into target - this is the part in question
var injector = angular.injector();
injector.injectInto( injectionTarget, ["$http", "$scope"]);

我最难找到关于如何实现我认为是一项非常受欢迎的功能的任何信息。

我认为最简单的方法可能是将您的对象注册为模块中的服务

var myObject = {} //Defined elsewhere or here as empty

app.service(‘aReferenceName’, function($http){
  myObject.$http = $http;
  return myObject;
});

这将产生双重效果,即设置对象上所需的属性,并根据需要从角度对其进行访问。这也是一个非常简单的代码块。请注意,从angular的角度来看,作为一个服务,它将是一个单例。如果您需要将其作为一个包含许多实例的类来执行,那么您将需要一个工厂。

您找到了吗?我确实查看了文档,但是它非常神秘,在尝试它们的内联示例时,它不断抛出关于查找某些关联的injectionAsset+“Provider”的错误。另外,请注意,您不需要在JavaScript中将变量定义为未定义以防止错误;这没用。