2014-06-27 31 views
0

有没有办法为Angular $注入器提供非Angular注入目标,以便像$ http,$ scope,$ location或$ q这样的Angular结构可以注入到它中?使用Angular注入非角对象

//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"]); 

我最难找到关于如何完成我认为是非常抢手的功能的任何信息。

+0

您是否发现https://docs.angularjs.org/api/auto/service/$injector? –

+0

我确实看过文档,但它很神秘,当尝试使用内联示例时,它一直在抛出关于找到某个关联的injectAsset +“Provider”的错误。 – jusopi

回答

1

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

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

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

这会产生双重效果,即在对象上设置所需的属性,并根据需要从角度访问它。这也是一个非常简单的代码块。请注意这个含义,尽管作为一项服务,它将从角度的角度来看是一个单身。如果你需要把它作为一个拥有很多实例的类来实现,你将需要一个工厂。

+0

作为附加说明,您不需要在JavaScript中将变量定义为未定义以防止出错;它不会帮助。 – JSager