2014-06-27 28 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