![](/img/trans.png)
[英]Unknown Provider in AngularJS when Injecting custom service into different module
[英]Injecting service which define by module.provider
很抱歉提出這樣的問題,但是我已經花了幾天的時間來解決這個問題。 但是即時通訊確實需要幫助。 我已經閱讀了理解依賴注入 ,並且其他堆棧問題在應用程序配置的自定義提供程序內部使用$ http在運行塊上使用$ injector在我的代碼中也不起作用。
也許這里有人可以幫助我,我也擔心如何注釋提供者以縮小規模。
My code in
問題是,當您在_getItem
調用$http
時,您就在“控制器”中。 一個解決方案可能是這樣做:
this.$get = function($http) {
return {
mainUrl : _mainUrl,
getItem : _getItem,
httpWrapper : $http
};
然后在_getItem
分配(或直接使用httpWrapper):
var $http = this.httpWrapper;
為了避免縮小問題,您可以將注入添加到方法$get
:
this.$get = ['$http', function($http) {
這里是更新的Plunker: http ://plnkr.co/edit/m7oXNolo6iV8Zy1NJ0vx
編輯 :我認為您想要實現的是:
var _getItem = function() {
var _d = null;
console.log(this)
var $http = this.httpWrapper;
var $q = this.qWrapper;
_d = $q.defer();
$http.get(_mainUrl)
.success(function(data) {
console.log(data);
_d.resolve( {data: data, x: "efe"} );
})
.error(function(status) {
_d.resolve( status );
});
return _d.promise;
};
$q.defer()
允許將http調用延遲到您的控制器,然后必須在您的控制器上進行以下編輯:
facade.getItem().then(function(data){
$scope.myReturn = data;
}
Updated Plunker
: http : Updated Plunker
注意 :考慮到then
的性質是異步的,因此如果您之后直接使用該變量,它將仍然是未定義的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.